我有三个载体
a = 1:5
b = 6:10
c = 11:15
我想通过将a
,b
和c
的所有组合一次两个放入列表来获取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))))
答案 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