【问题标题】:R abind function with list of objects带有对象列表的 R abind 函数
【发布时间】:2017-02-06 03:39:06
【问题描述】:

我希望使用 abind 包中的 abind 函数将大量 2d 对象(M1、M2 .....)加入到 3d 数组中

如果我这样做:

abind(M_1, M_2, M_3, M_4, along=3)

我得到了想要的结果

但是如果我生成一个列表矩阵:

list_matrix <- list(ls(pattern="M_"))

然后:

abind(list_matrix, along=3)

我收到一个错误。

我是否遗漏了一些明显的东西?我想使用 list_matrix 来避免手动写出 M1 等。

【问题讨论】:

标签: r


【解决方案1】:

如果我们需要矩阵的list,那么只需使用mget

list_matrix <- mget(ls(pattern="M_\\d+"))

或者一个3D数组,然后将上面的list转换成带有do.call的数组

ar1 <- do.call(abind, c(list_matrix, along = 3))

OP的代码

ar2 <- abind(M_1, M_2, M_3, M_4, along=3)
all.equal(ar1, ar2, check.attributes = FALSE)
#[1] TRUE

或者正如@thelatemail 提到的那样

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)

【讨论】:

  • Just abind(list_matrix, along=3) 按照?abind 为我工作 - "或者,可以提供一个(并且只有一个)列表参数,其组件是要绑定在一起的对象。 "
猜你喜欢
  • 1970-01-01
  • 2015-04-08
  • 1970-01-01
  • 2018-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-03
  • 2021-03-02
相关资源
最近更新 更多