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

我想在R中放大一个阵列,其中额外的单元格是NA(或其他东西).

我能找到的唯一方法是创建一个新的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

这有效,但感觉次优.

好主意?

最佳答案 你也可以这样做:

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
点赞