1

用于处理二维矩阵,rbind并且cbind是有用的函数。是否有更通用的函数可以在更多维度上执行相同的操作?假设我有这样的数据:

data <- lapply(c(11,22,33), function(i) matrix(i, nrow=2, ncol=4))

我想得到的是:

data <- do.call(c, data)
dim(data) <- c(2, 4, 3)

但不必自己计算所有尺寸。

是否有提供此功能的功能,无论是内置的还是作为合理通用包的一部分?或者你想分享你自己关于如何最优雅地实现这样一个功能的想法?

奖励积分:

  • 如果该函数对维度的顺序进行了一些控制,则aperm可以避免后续调用。
  • 如果它可以通过传递多个函数参数或一个参数来操作,那就太好尽管使用listor do.calllist任何一个都足够了。
  • 我想使用这样的函数作为foreach调用的.combine参数。所以它应该能够使用以下形式的调用来构造多维矩阵(每个调用恰好有两个参数,第一个通常是前一次调用的结果)甚至(超过两个参数,第一个仍然可能是之前的调用),具有相同的大小,导致矩阵的维度比这些维度高 1,并且该维度的大小为 4,对应于 4 个元素。f(f(f(a, b), c), d)f(f(a, b), c, d)a, b, c, dad
4

1 回答 1

2

abind包正好有这个功能,你提到的大部分功能都具备,虽然我没有详细检查所有这些功能。

至少,它会让您开始了解如何按照这些思路实现某些东西。

于 2012-12-06T21:50:49.403 回答