rbind 矩阵列表中的矩阵

标签 r list apply

我有一个 listlist的矩阵。每个list具有相同数量的matrices其中每个 matrix具有相同的列数:

set.seed(1)

mat.lol <- list(list1=list(matrix(rnorm(100),ncol=10),matrix(rnorm(200),ncol=10),matrix(rnorm(140),ncol=10)),
                list2=list(matrix(rnorm(80),ncol=10),matrix(rnorm(220),ncol=10),matrix(rnorm(110),ncol=10)),
                list3=list(matrix(rnorm(300),ncol=10),matrix(rnorm(500),ncol=10),matrix(rnorm(650),ncol=10)))

我想rbind每个 matrix i在所有列表中,这样我就得到了这个 listmatrices :
mat.list <- list(rbind(mat.lol[[1]][[1]],mat.lol[[2]][[1]],mat.lol[[3]][[1]]),
                 rbind(mat.lol[[1]][[2]],mat.lol[[2]][[2]],mat.lol[[3]][[2]]),
                 rbind(mat.lol[[1]][[3]],mat.lol[[2]][[3]],mat.lol[[3]][[3]]))

什么是 apply function能做到吗?

最佳答案

您可以使用 transpose()函数来自 purrr包将列表翻过来,以便每个子列表包含您要绑定(bind)在一起的所有矩阵,然后您可以简单地遍历结果列表和rbind矩阵:

library(purrr)
mat.list.1 <- lapply(transpose(mat.lol), do.call, what=rbind)

identical(mat.list, mat.list.1)
# [1] TRUE

坚持purrr句法:
mat.list.3 <- transpose(mat.lol) %>% map(do.call, what=rbind)

identical(mat.list, mat.list.3)
# [1] TRUE

或者您可以使用 Map从基础 R:
mat.list.2 <- do.call(Map, c(f = rbind, mat.lol))

identical(mat.list, mat.list.2)
# [1] TRUE

关于rbind 矩阵列表中的矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41317962/

相关文章:

r - 更改逻辑回归中分类预测变量的引用组

rcpp 函数在 ubuntu 上工作,但在 windows 和 mac 上不起作用

r - Xgboost 处理不平衡的分类数据

list - 为什么用 cons() 和 list() 创建的列表显示不同?

c# - 检查值是否是 C# 中一组值中的一个的最简单方法?

R data.table 使用任何划分列集和标志

r - ggplot2 中标签文本条目中的不同字体和大小

Javascript 字符串到数组/字典

javascript - 如果我使用 `this` ,为什么 `window` 设置为 `function.apply(undefined, args)` ?

r - 遍历数据框中的每一行,从栅格中提取值并写入 csv 文件