调整大小/放大数组并填充R

时间:2015-04-28 09:25:26

标签: r multidimensional-array

我想在R中放大一个数组,其中额外的单元格为NA s(或其他)。

我能找到的唯一方法是创建一个更大的新NA填充数组,然后用旧数据覆盖它,例如:

old.data <- array(data=seq(1,24),dim=c(2,3,4))

new.data <- array(data=NA, dim=c(dim(old.data)[1]+1, # adding e.g. 1 extra row
                                 dim(old.data)[2],
                                 dim(old.data)[3]))

new.data[1:dim(old.data)[1],,] <- old.data

这有效,但感觉次优。

更好的想法?

1 个答案:

答案 0 :(得分:2)

你也可以这样做:

library(magrittr)

lapply(split(old.data, rep(1:12, each=2)), c, NA) %>% unlist %>% array(dim=c(3,3,4))

#, , 1

#     [,1] [,2] [,3]
#[1,]    1    3    5
#[2,]    2    4    6
#[3,]   NA   NA   NA

#, , 2

#     [,1] [,2] [,3]
#[1,]    7    9   11
#[2,]    8   10   12
#[3,]   NA   NA   NA

#, , 3

#     [,1] [,2] [,3]
#[1,]   13   15   17
#[2,]   14   16   18
#[3,]   NA   NA   NA

#, , 4

#     [,1] [,2] [,3]
#[1,]   19   21   23
#[2,]   20   22   24
#[3,]   NA   NA   NA