gpt4 book ai didi

r - 在多维结构(数组)中查找位置列表

转载 作者:行者123 更新时间:2023-12-04 10:12:52 25 4
gpt4 key购买 nike

假设我有一个简单的多维结构,如下所示:

somestr<-array(sample.int(2, 120, replace=TRUE), dim=c(4,5,6))

我正在寻找结构中的所有位置(在本例中为数组),其中值等于 2。请注意,该结构也可能包含字符或逻辑值。现在,只需找到等于给定的所有值就可以了,但最好将这个想法扩展到可以应用于结构中每个项目的任何逻辑值函数(这将允许例如 is.na 到使用)。

我想得到的是一个 ( integer ) 矩阵,列数与 somestr 一样多具有维度(在本例中为 3),以及与给定值 (2) 相等的行数(取决于上面的 sample.int 调用)。这个新矩阵中的值是 somestr 中的“坐标”其中值等于 2。

我很抱歉将我的示例与解释混为一谈,但我希望这样会更清楚。为了记录:我能够自己制作这个(甚至可以回答我自己的问题),但我希望有一个标准化的解决方案(阅读:某个包中的现成函数),或者在此过程中学习新技巧。

所以,简而言之,你能不能写一个函数
posOf<-function(somestr, valueToCompareTo)

返回 somestr 中位置的矩阵等于 valueToCompareTo ,如果 valueToCompareTo是一个函数,位置在 somestr应用此函数返回 TRUE .

最佳答案

我认为which功能可以做到这一点:

which(somestr==2, arr.ind=TRUE)

(如果我理解正确的话)
R> set.seed(123)
R> somestr <- array(sample.int(2, 120, replace=TRUE), dim=c(4,5,6))
R> somestr
, , 1

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

...

, , 6

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

R> which(somestr==2, arr.ind=TRUE)
dim1 dim2 dim3
[1,] 2 1 1
[2,] 4 1 1
[3,] 1 2 1
[4,] 3 2 1
[5,] 4 2 1
...
[57,] 2 5 6
[58,] 3 5 6

关于r - 在多维结构(数组)中查找位置列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7204016/

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