El número de combinaciones posibles de dos vectores se puede calcular multiplicando todos los elementos sucesivos del primer vector con los elementos correspondientes del segundo vector. En caso de que los dos vectores tengan elementos únicos, la tabla resultante o el marco de datos formado tiene m * n elementos, donde m es la longitud del primer vector y n es la longitud del segundo vector, respectivamente. El lenguaje de programación R nos proporciona un método incorporado, así como paquetes externos para encontrar fácilmente los posibles pares.
Método 1: Usar el método expand.grid()
expand.grid() en R se puede usar para generar un marco de datos donde las filas son todas las posibles combinaciones únicas formadas al tomar elementos de los vectores de argumento. También se pueden especificar más de 2 vectores de argumento. Las columnas se pueden asignar nombres personalizados, de lo contrario, los nombres de las filas son automáticos. El número de filas en el marco de datos es equivalente al total de combinaciones plausibles.
Sintaxis:
expandir.grid(vec1…n)
Ejemplo:
R
# declaring first integer vector vec1 <- c(1:3) # declaring second string vector vec2 <- c("GeeksForGeeks","CSE") # creating a data frame of vector1 and vector2 combinations expand.grid("col1"= vec1,"col2" = vec2)
Producción
col1 col2 1 1 GeeksForGeeks 2 2 GeeksForGeeks 3 3 GeeksForGeeks 4 1 CSE 5 2 CSE 6 3 CSE
Método 2: Usar el paquete tidyr
El paquete «tidyr» en lenguaje R se puede instalar y cargar en el directorio de trabajo. El método crossing() de este paquete se usa para crear una combinación cruzada de los vectores de entrada para generar todas las combinaciones plausibles. Los nombres también se pueden proporcionar mediante el uso de una lista de argumentos con nombre durante la llamada a la función. Se conserva el orden de aparición de los elementos en el vector.
Sintaxis:
cruce(vec1…n)
Ejemplo:
R
library("tidyr") # declaring first integer vector vec1 <- letters[1:4] # declaring second string vector vec2 <- c(8:10) # creating a data frame of vector1 # and vector2 combinations crossing(vec1,vec2)
Producción
# A tibble: 12 x 2 vec1 vec2 <chr> <int> 1 a 8 2 a 9 3 a 10 4 b 8 5 b 9 6 b 10 7 c 8 8 c 9 9 c 10 10 d 8 11 d 9 12 d 10
Método 3: Usar el paquete data.table
La biblioteca data.table se puede instalar y cargar en el espacio de trabajo. El método CJ que se refiere a (C)ross (J)oin de este paquete se puede usar para crear una tabla de datos formada a partir del producto cruzado de los vectores. Se pueden suministrar varios vectores de argumentos a este método. La salida se devuelve a la forma de una tabla de datos utilizando este enfoque.
Sintaxis: CJ(vec1..n, ordenado = VERDADERO, único = FALSO)
Parámetro:
- vec1.. n : vectores de argumentos de entrada
- sorted : indicador de si el orden de los vectores de entrada debe conservarse o no.
- único : indicador de si solo se deben mostrar los valores únicos del resultado
Ejemplo:
R
library("data.table") # declaring first character vector vec1 <- letters[1:4] # declaring second integer vector vec2 <- c(8:10) # declaring third integer vector vec3 <- c(1:2) # creating a data frame of vector1 # and vector2 combinations CJ(vec1, vec2, vec3, unique = TRUE)
Producción:
vec1 vec2 vec3 1: a 8 1 2: a 8 2 3: a 9 1 4: a 9 2 5: a 10 1 6: a 10 2 7: b 8 1 8: b 8 2 9: b 9 1 10: b 9 2 11: b 10 1 12: b 10 2 13: c 8 1 14: c 8 2 15: c 9 1 16: c 9 2 17: c 10 1 18: c 10 2 19: d 8 1 20: d 8 2 21: d 9 1 22: d 9 2 23: d 10 1 24: d 10 2
Publicación traducida automáticamente
Artículo escrito por yashkumar0457 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA