具有对象列表的R abind函数
我希望使用包abind中的abind函数来连接大量的2d对象M1、M2。。。。。变成一个3d阵列 如果我这样做:具有对象列表的R abind函数,r,R,我希望使用包abind中的abind函数来连接大量的2d对象M1、M2。。。。。变成一个3d阵列 如果我这样做: abind(M_1, M_2, M_3, M_4, along=3) 我得到了想要的结果 但如果我生成一个列表矩阵: list_matrix <- list(ls(pattern="M_")) 我犯了一个错误 我错过了什么明显的东西吗?我想使用列表矩阵来避免手动写出M1等。如果我们需要矩阵列表,那么只需使用mget OP代码 ar2 <- abind(M_1, M_2
abind(M_1, M_2, M_3, M_4, along=3)
我得到了想要的结果
但如果我生成一个列表矩阵:
list_matrix <- list(ls(pattern="M_"))
我犯了一个错误
我错过了什么明显的东西吗?我想使用列表矩阵来避免手动写出M1等。如果我们需要矩阵列表,那么只需使用mget
OP代码
ar2 <- abind(M_1, M_2, M_3, M_4, along=3)
all.equal(ar1, ar2, check.attributes = FALSE)
#[1] TRUE
数据
abindlist_矩阵,along=3对我来说很好,根据这里的答案:abindlist_矩阵,along=3对我来说很好,根据?abind-或者,可以提供一个且只有一个列表参数,其组件是要绑定在一起的对象。
list_matrix <- mget(ls(pattern="M_\\d+"))
ar1 <- do.call(abind, c(list_matrix, along = 3))
ar2 <- abind(M_1, M_2, M_3, M_4, along=3)
all.equal(ar1, ar2, check.attributes = FALSE)
#[1] TRUE
abind(list_matrix, along=3)
M_1 <- matrix(1:25, 5 , 5)
M_2 <- matrix(26:50, 5, 5)
M_3 <- matrix(51:75, 5, 5)
M_4 <- matrix(76:100, 5, 5)