我想在R中使用expand.grid,但它可以使用两个预先指定的向量和任意剩余量:
例如,两个向量d和w,以及3个长度为4的向量:M = expand.grid(d = 1:3, w = 1:3, rep(list(1:4),(3)))
问题是它认为最后一件事是一个对象,我希望它有Var3,Var4和Var5。相反,我们得到:
M
d w Var3
1 1 1 1, 2, 3, 4
2 2 1 1, 2, 3, 4
3 3 1 1, 2, 3, 4
4 1 2 1, 2, 3, 4
5 2 2 1, 2, 3, 4
6 3 2 1, 2, 3, 4
7 1 3 1, 2, 3, 4
有趣的是,当我单独使用前两个向量时,它可以扩展网格:
M = expand.grid(rep(list(1:4),(3)))
Var1 Var2 Var3
1 1 1 1
2 2 1 1
3 3 1 1
4 4 1 1
5 1 2 1
6 2 2 1
7 3 2 1
...
答案 0 :(得分:2)
如果您检查?expand.grid
并查看参数,则会显示:
...
向量,因子或包含这些的列表。
它似乎不接受混合向量和列表。连接向量和列表以将单个列表作为参数将起作用:
M = expand.grid(c(list(d = 1:3, w = 1:3), rep(list(1:4), 3)))
M
# d w Var3 Var4 Var5
#1 1 1 1 1 1
#2 2 1 1 1 1
#3 3 1 1 1 1
#4 1 2 1 1 1
#5 2 2 1 1 1
#6 3 2 1 1 1
# ...