我有一个相对较大的清单 . 列表的每个元素都是六个元素的列表 . 这些元素中的每一个都是具有固定行数和可变列数的矩阵 . 我想结合矩阵,最终得到一个六个矩阵的列表,其中每个矩阵是从每个子列表中的相应元素调用cbind的结果,即第一个矩阵是来自内部的所有第一个矩阵的cbind列表,第二个矩阵是第二个矩阵的cbind等 .
例如:
temp = list()
temp[["a"]] = list(matrix(1, nrow=2, ncol=1), matrix(2, nrow=2,ncol=2))
temp[["b"]] = list(matrix(3, nrow=2, ncol=3), matrix(4, nrow=2,ncol=4))
调用一些R代码应该导致输出
$`1`
[,1] [,2] [,3] [,4]
[1,] 1 3 3 3
[2,] 1 3 3 3
$`3`
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 2 2 4 4 4 4
[2,] 2 2 4 4 4 4
我可以看到那个叫
mapply(cbind, temp[[1]], temp[[2]])
为这个玩具示例生成所需的输出,但我是否为大型列表执行此操作,从执行到执行可能有可变数字元素 .
这是一个优雅和高效的解决方案吗?
提前致谢!
3 回答
purrr::pmap
在列表项上并行迭代并传递给您指定的函数,因此您只需获得所需的结果我们可以使用
transpose
来自purrr
和cbind
或者我们可以使用
transpose
和map
来自purrr
我们也可以试试
split
选项基准