我有一个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)
但这不起作用。
答案 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