R - 扩展多维数组

tuc*_*son 4 r

我有一个多维数组S:

> dim(S)
[1] 45 81  3 52
Run Code Online (Sandbox Code Playgroud)

我想在第三维中添加一列,以便:

> dim(S)
[1] 45 81  **4** 52
Run Code Online (Sandbox Code Playgroud)

并保留S中的所有当前数据.

Bro*_*ieG 13

这是一个潜在的基础R解决方案[<-.

S.new <- array(NA, dim=c(45, 81, 4, 52))
S.new[,,-4,] <- S                 # re-insert on all but the added extent
Run Code Online (Sandbox Code Playgroud)

基本上,您只需重新插入新数组,但可以指定旧数组中存在的维度.


我们可以用小玩具示例来测试它是否有效::

arr <- array(rep(1:4, each=4), dim=c(2, 2, 2, 2))     # toy array
arr.new <- array(NA, dim=c(2, 2, 3, 2))               # increased dimension 3
Run Code Online (Sandbox Code Playgroud)

然后一个简单的步骤:

arr.new[,,-3,] <- arr
Run Code Online (Sandbox Code Playgroud)


Gav*_*lly 6

如果您加载到abind包中,您就可以访问

empty <- array(0, dim=c(45,81,52))
S <- abind(S,empty, along=3)
Run Code Online (Sandbox Code Playgroud)