在R

时间:2016-08-08 20:47:15

标签: r matrix vector grid

我想在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
...

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
# ...