获得n个向量的所有组合,一次取2个向量

时间:2017-04-18 03:09:48

标签: r

我有三个载体

a = 1:5
b = 6:10
c = 11:15

我想通过将abc的所有组合一次两个放入列表来获取data.frames。以下是我想要的输出。

list(cbind(a,b), cbind(a,c), cbind(b,c))
[[1]]
     a  b
[1,] 1  6
[2,] 2  7
[3,] 3  8
[4,] 4  9
[5,] 5 10

[[2]]
     a  c
[1,] 1 11
[2,] 2 12
[3,] 3 13
[4,] 4 14
[5,] 5 15

[[3]]
      b  c
[1,]  6 11
[2,]  7 12
[3,]  8 13
[4,]  9 14
[5,] 10 15

以下类型的作品,但我想知道是否有更好的方法?

combn(x = c("a","b","c"), m = 2, function(x) sapply(x, function(y) eval(parse(text = y))))

1 个答案:

答案 0 :(得分:4)

这是一种方式(感谢OP和@thelatemail修复):

M = cbind(a, b, c)
combn(seq_len(ncol(M)), 2, FUN = function(x) M[,x], simplify = FALSE)

[[1]]
     a  b
[1,] 1  6
[2,] 2  7
[3,] 3  8
[4,] 4  9
[5,] 5 10

[[2]]
     a  c
[1,] 1 11
[2,] 2 12
[3,] 3 13
[4,] 4 14
[5,] 5 15

[[3]]
      b  c
[1,]  6 11
[2,]  7 12
[3,]  8 13
[4,]  9 14
[5,] 10 15