给定三个(或 n
列表):
one <- list(a=1:2,b="one")
two <- list(a=2:3,b="two")
three <- list(a=3:4,b="three")
cbind
的更有效方式是什么?在 n
中查找每个列表项列表,得到这个结果?mapply(cbind,mapply(cbind,one,two,SIMPLIFY=FALSE),three,SIMPLIFY=FALSE)
$a
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 2 3 4
$b
[,1] [,2] [,3]
[1,] "one" "two" "three"
这在
n
时可以正常工作是 2
或 3
但很快就会变得异常复杂。有没有更有效的变化?我在 S.O. 上看到过类似的问题。但一直在努力适应它们。
最佳答案
使用Reduce
和 Map
( Map
是 mapply(..., SIMPLIFY = FALSE)
的简单包装器|
Reduce(function(x,y) Map(cbind, x, y),list(one, two,three))
使用
Reduce
时或 R 中的大多数函数式编程基础函数,您通常不能在 ...
中传递参数所以你通常需要编写一个小的匿名函数来做你想做的事。
关于r - 递归地从多个列表中绑定(bind)项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15148451/