我有一个类似于此的数组:
ar1<- array(rep(1, 91*5*4), dim=c(91, 5, 4))
我想在每个组件的末尾添加一个额外的列(n = 4),该列在所有组件之间是连续的(我不确定组件是否是正确的词)。
在这种情况下,它将是一个从1到364的序列。
其背后的想法是,如果在我弄乱联接数据或其他任何东西时,这些行被打乱了,我将能够看到并纠正它。
请问我该如何实现?
答案 0 :(得分:0)
以下可能是您想要的。
它使用apply
向由数组第二维定义的每个切片添加额外的列,并在此之后正确设置最终维。
ar2 <- sapply(1:5, function(i){
new <- seq_len(NROW(ar1[, i, ])) + (i - 1)*NROW(ar1[, i, ])
cbind(ar1[, i, ], new)
})
dim(ar2) <- c(91, 5, 5)
上面的代码创建了一个新数组,如果需要,您可以重写原始数组。
要取回原件,可以这样做。
n <- dim(ar2)[2]
ar1_back <- sapply(1:5, function(i){
ar2[, -n, i]
})
dim(ar1_back) <- c(91, 5, 4)
identical(ar1, ar1_back)
#[1] TRUE