将替换应用于3D阵列的每个第三维

时间:2017-09-22 18:02:39

标签: arrays r multidimensional-array

我有一个mxnxp(3D)数组A.我有一个2D矩阵B,第一列的值为1:m,第二列的值为1:n。我想做的是在每个第三维度(高度?)中找出与B给出的指数相对应的指数。所以,

for (i in 1:p) {
    A[,,i][B] = NA
}

有没有办法在没有for循环的情况下执行此操作?我在想像

A_NA = apply(A,3,function(x) x[B] = NA)

但这不起作用。

1 个答案:

答案 0 :(得分:0)

我们需要退回x,然后将其分配给' A'

A[] <- apply(A,3,function(x) { x[B] = NA; x})

使用OP的解决方案进行检查

for (i in 1:p) {
     A1[,,i][B] = NA
 }

identical(A, A1)
#[1] TRUE

数据

A <- array(1:40, c(5, 4, 2) )
B <- cbind(c(1, 2, 3, 4), c(2, 3, 1, 1))
p <- 2
A1 <- A