r - 递归地从多个列表中绑定(bind)项目

标签 r list join cbind

给定三个(或 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 时可以正常工作是 23但很快就会变得异常复杂。
有没有更有效的变化?我在 S.O. 上看到过类似的问题。但一直在努力适应它们。

最佳答案

使用ReduceMap ( Mapmapply(..., 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/

相关文章:

r - 更改数据帧结构(两个数据帧到一个)

python - 列表按字母顺序而不是数字顺序排列

r - 通过交叉检查 R tidyverse 中的两列来连接两个表

R 检查与 R-devel 给出与核心包功能相关的全局功能注释

r - R 中具有协变量的循环线性回归

r - 在 r 中制作不同列表条目的矩阵

python - 使用按日期分组将字典列表转换为字典列表

mysql - 加入 Max 和 pre-Max 行

r - 在 R 中使用表情符号

r - 如何在每一行应用库命令并创建新变量