gpt4 book ai didi

r - 用 m 维数组选择 N 维数组的子集?

转载 作者:行者123 更新时间:2023-12-02 22:38:57 27 4
gpt4 key购买 nike

是否可以用二维二进制数组选择三维数组的子集?我希望能够做到这一点,以便我可以将值插入选择中

例如,我有一个数组 dim(a) = (lat, long, time),我想用 dim(b) = (lat, long) 选择一个充满 TRUE/FALSE 值的数组。我希望能够做类似的事情:

> a <- array(c(1,2,3,4,5,6,7,8),c(2,2,2))
> b <- matrix(c(0,1,0,0), c(2,2))==TRUE
> a[[b]] <- 0
> a
, , 1
[,1] [,2]
[1,] 1 3
[2,] 0 4

, , 2
[,1] [,2]
[1,] 5 7
[2,] 0 8

编辑:好的,所以这看起来像是一个愚蠢的问题,因为我刚刚意识到如果您使用 a[b] <- 0,它的工作原理与上述完全相同。 (单括号)。但这仅在您要跨越的维度是末尾的维度时才有效。所以,为了让它更有趣:

如果您要跨越的维度是第一维度或第二维度,您如何做到这一点 - 例如。如果 dim(b)==(lat, years)?

最佳答案

R 支持使用 [ 运算符对数组进行矩阵子集化(即单括号,而不是双括号 - 双括号将始终只返回一个元素):

a[b] <- 0
a

, , 1

[,1] [,2]
[1,] 1 3
[2,] 0 4

, , 2

[,1] [,2]
[1,] 5 7
[2,] 0 8

请注意,这与您在问题中指定的结果有些不同。在您的问题中,第二个元素(即矩阵的左下角元素)为 1,因此您希望修改每个数组切片的第二个元素。 (换句话说,不是第一个,正如您在示例中所做的那样。)

关于r - 用 m 维数组选择 N 维数组的子集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11026289/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com