Чтобы расширить ответ @ AshOfFire, если вместо NA
:
есть пустые строки
df <- data.frame(Laptop = c("Doll", "Landovo", "Ocer", "Toshibo", "UFO"),
Hard_Disk = c("100","500","1000", "", ""),
RAM = c("32","64","","",""), stringsAsFactors = FALSE)
используйте lapply
, чтобы преобразовать их в NA
:
df[] <- lapply(df, function(x){
ifelse(x == "", NA, x)
})
, а затем используйте expand.grid
с na.omit
для соответствующих переменных:
expand.grid(df$Laptop, na.omit(df$Hard_Disk), na.omit(df$RAM), stringsAsFactors = FALSE)
Var1 Var2 Var3
1 Doll 100 32
2 Landovo 100 32
3 Ocer 100 32
4 Toshibo 100 32
5 UFO 100 32
6 Doll 500 32
7 Landovo 500 32
8 Ocer 500 32
9 Toshibo 500 32
10 UFO 500 32
11 Doll 1000 32
12 Landovo 1000 32
13 Ocer 1000 32
14 Toshibo 1000 32
15 UFO 1000 32
16 Doll 100 64
17 Landovo 100 64
18 Ocer 100 64
19 Toshibo 100 64
20 UFO 100 64
21 Doll 500 64
22 Landovo 500 64
23 Ocer 500 64
24 Toshibo 500 64
25 UFO 500 64
26 Doll 1000 64
27 Landovo 1000 64
28 Ocer 1000 64
29 Toshibo 1000 64
30 UFO 1000 64