gpt4 book ai didi

arrays - R中数组的简单子(monad)集选择

转载 作者:行者123 更新时间:2023-12-02 01:58:40 24 4
gpt4 key购买 nike

我有一个 6*3*3 维数组:

a<-array(data=rep(1:5,10),dim=c(6,3,3)

我有另一个包含 3 个数字的向量:

b<-1:3

我想做以下选择:

a 的第一列中选​​择那些在第二列中有 b 的值。我想使用 b 作为 a 的第三个维度的索引。即 b 的第一个值应该在 a[,,1] 中搜索 b 的第二个值在 a[,, 2]a[,,3]

中的第三个值

原始数组如下所示:

a

, , 1

[,1] [,2] [,3]
[1,] 1 2 3
[2,] 2 3 4
[3,] 3 4 5
[4,] 4 5 1
[5,] 5 1 2
[6,] 1 2 3

, , 2

[,1] [,2] [,3]
[1,] 4 5 1
[2,] 5 1 2
[3,] 1 2 3
[4,] 2 3 4
[5,] 3 4 5
[6,] 4 5 1

, , 3

[,1] [,2] [,3]
[1,] 2 3 4
[2,] 3 4 5
[3,] 4 5 1
[4,] 5 1 2
[5,] 1 2 3
[6,] 2 3 4

在选择之后这是我想要得到的:

 , , 1

[,1]
[5,] 5


, , 2

[,1]
[3,] 1


, , 3

[,1]
[1,] 2
[6,] 2

最佳答案

你可以这样做:

lapply(seq_along(b), function(i) a[a[, 2, i] == b[i], 1, i, drop = FALSE])

请注意,输出是单列矩阵的列表。我不认为没有列表就可以逃脱,因为每个 b[i] 的匹配数量可能不同。此外,您可能希望删除 drop = FALSE,这样输出将只是一个向量列表。

关于arrays - R中数组的简单子(monad)集选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18508367/

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