簡體   English   中英

對3D陣列的每個第3維應用替換

[英]Apply a replacement to each 3rd dimension of a 3D 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)

但這是行不通的。

我們需要返回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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM