R中多个向量的组合

时间:2011-11-12 22:37:22

标签: r combinations

我不确定排列是否正确。我想给出一组n个向量(即[1,2][3,4][2,3])置换它们并得到

的输出
[1,3,2],[1,3,3],[1,4,2],[1,4,3],[2,3,2] etc.

R中是否会执行此操作?

2 个答案:

答案 0 :(得分:12)

这是一个有用的案例,用于将向量存储在列表中,并使用do.call()为您安排适当的函数调用。 expand.grid()是您想要的标准功能。但是,您不必输入或命名单个向量,请尝试:

> l <- list(a = 1:2, b = 3:4, c = 2:3)
> do.call(expand.grid, l)
  a b c
1 1 3 2
2 2 3 2
3 1 4 2
4 2 4 2
5 1 3 3
6 2 3 3
7 1 4 3
8 2 4 3

然而,尽管我的聪明才智,但事实证明expand.grid()接受了一个列表:

> expand.grid(l)
  a b c
1 1 3 2
2 2 3 2
3 1 4 2
4 2 4 2
5 1 3 3
6 2 3 3
7 1 4 3
8 2 4 3

答案 1 :(得分:8)

这是expand.grid的作用。

从帮助页面引用:从提供的矢量或因子的所有组合中创建数据框。结果是data.frame,每个组合都有一行。

expand.grid(
    c(1, 2),
    c(3, 4),
    c(2, 3)
)

  Var1 Var2 Var3
1    1    3    2
2    2    3    2
3    1    4    2
4    2    4    2
5    1    3    3
6    2    3    3
7    1    4    3
8    2    4    3