我想在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