gpt4 book ai didi

arrays - 从数组中提取数组

转载 作者:行者123 更新时间:2023-12-02 11:56:58 26 4
gpt4 key购买 nike

我希望从数组中提取数组。这是一个小示例 arraymy.array2:

x = cbind(1:5, 6:10, 12:16)
y = cbind(c(11,3,12,14,15), c(16,8,15,17,20), 6:10)
z = cbind(c(21,21,22,3,25), c(26,28,25,8,20), 36:40)

my.array <- array(c(x, y), dim = c(5, 3, 2))
my.array2 <- array(c(my.array, z), dim = c(5, 3, 3))
my.array2
, , 1

[,1] [,2] [,3]
[1,] 1 6 12
[2,] 2 7 13
[3,] 3 8 14
[4,] 4 9 15
[5,] 5 10 16

, , 2

[,1] [,2] [,3]
[1,] 11 16 6
[2,] 3 8 7
[3,] 12 15 8
[4,] 14 17 9
[5,] 15 20 10

, , 3

[,1] [,2] [,3]
[1,] 21 26 36
[2,] 21 28 37
[3,] 22 25 38
[4,] 3 8 39
[5,] 25 20 40

我希望提取第一列为 3 且第二列为 8 的行,从而得到以下数组:

, , 1

[,1] [,2] [,3]
[1,] 3 8 14

, , 2

[,1] [,2] [,3]
[1,] 3 8 7

, , 3

[,1] [,2] [,3]
[1,] 3 8 39

然后是这个data.frame:

     [,1] [,2] [,3]
[1,] 3 8 14
[2,] 3 8 7
[3,] 3 8 39

以下是一些失败的尝试:

my.array2[my.array2[,1,] == 3 & my.array2[,2,] == 8,,]

my.array2[my.array2[,1,] == 3 & my.array2[,2,] == 8,my.array2[,1,] == 3 & my.array2[,2,] == 8,my.array2[,1,] == 3 & my.array2[,2,] == 8]

我更喜欢基于 R 的解决方案。

最佳答案

使用R: extract matrix from array, using a matrix of indices要从数组中获取元素,我们可以执行以下操作:

df = apply(my.array2, 2, as.vector)
# Select rows which meet criteria
df = data.frame(df[df[,1] == 3 & df[,2] == 8, ])
> df
X1 X2 X3
1 3 8 14
2 3 8 7
3 3 8 39

关于arrays - 从数组中提取数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55291508/

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