我有一个带有几个维度的数组。我想根据第一维中的值替换值。在下面的示例中,我想更改所有相应的 a1
维度等于 2 的值。如果我只更改一个索引:
set.seed(2)
arr <- array(data=sample(1:2, 18, replace = TRUE), dim=c(3,3,2), dimnames=list(paste0("a",1:3),paste0("b",1:3),paste0("c",1:2)))
# replace second index according to first index of dimension 1
arr[2,,][arr[1,,]==2] <- NA
结果如预期:
> arr
, , c1
b1 b2 b3
a1 1 2 1
a2 1 NA 1
a3 2 2 1
, , c2
b1 b2 b3
a1 2 2 1
a2 NA NA 2
a3 1 1 2
但是如果我尝试像这样更改所有其他索引:
set.seed(2)
arr <- array(data=sample(1:2, 18, replace = TRUE), dim=c(3,3,2), dimnames=list(paste0("a",1:3),paste0("b",1:3),paste0("c",1:2)))
# replace 2nd & 3rd index according to first index of dimension 1
arr[2:3,,][arr[1,,]==2] <- NA
它的运行结果与我的期望不符。数组中的索引很难理解。我该如何正确地实现它呢?(自然地,而不是逐个更改每个索引)。谢谢。
我期望的结果应该是:
> arr
, , c1
b1 b2 b3
a1 1 2 1
a2 1 NA 1
a3 2 NA 1
, , c2
b1 b2 b3
a1 2 2 1
a2 NA NA 2
a3 NA NA 2
arr[2,,]
和arr[2,,,drop=FALSE]
之间的区别。 - GKi