[R-es] Combinaciones sin repetición...con restricciones

giltrapo giltrapo en gmail.com
Mie Abr 27 17:48:03 CEST 2016


Hola, tengo que resolver un problema para el que normalmente utilizaría
excel, pero me gustaría intentar resolverlo con R. Se trata de lo siguiente:

Tengo tres elementos: a, b y c.

Dichos elementos están agrupados en siete objetos, producto de todas las
combinaciones sin repetición posibles:

Objeto 1: a
Objeto 2: b
Objeto 3: c
Objeto 4: a y b
Objeto 5: a y c
Objeto 6: b y c
Objeto 7: a, b y c

Mi objetivo es obtener todas las combinaciones sin repetición posibles de
orden n, en las que estén presentes, única y exclusivamente, los elementos
que yo elija.

Ejemplo 1: ¿en cuántas combinaciones sin repetición de los objetos
anteriores, tomados de dos en dos, están presentes los elementos a y b
(SÓLO a y b)?

Solución:
(Objeto 1, Objeto 2)
(Objeto 1, Objeto 4)
(Objeto 2, Objeto 4).

Un paso más allá consistiría en obtener todas las combinaciones sin
repetición posibles de cualquier orden, en las que estén presentes, única y
exclusivamente, los elemento que yo elija.

Ejemplo 2: ¿en cuántas combinaciones sin repetición de cualquier orden de
los objetos anteriores están presentes los elementos a y b (SÓLO a y b)?

Solución:
(Objeto 4)
(Objeto 1, Objeto 2)
(Objeto 1, Objeto 4)
(Objeto 2, Objeto 4)
(Objeto 1, Objeto 2, Objeto 4)

Para hacerlo en R me planteé el primer ejemplo: ¿en cuántas combinaciones
sin repetición de los objetos anteriores, tomados de dos en dos, están
presentes los elementos a y b (SÓLO a y b)?

df <- as.data.frame(t(combn(c("a", "b", "c", "a,b", "a,c", "b,c",
"a,b,c"),2)))
df <- df[!grepl("c", df$V1),]
df <- df[!grepl("c", df$V2),]

El problema es que este código me resuelve este caso concreto, pero no
otros similares. He intentado crear una función que me permita resolver
otro casos, como por ejemplo el ejemplo 2, pero no doy con la forma
adecuada de plantearlo.

¿Se os ocurre alguna forma?

Muchas gracias!

Jose Ignacio

	[[alternative HTML version deleted]]



Más información sobre la lista de distribución R-help-es