要扩展@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
with :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