Nic*_*bbe 6 position r multidimensional-array
假设我有一个简单的多维结构,就像这样:
somestr<-array(sample.int(2, 120, replace=TRUE), dim=c(4,5,6))
Run Code Online (Sandbox Code Playgroud)
我正在寻找结构中的所有位置(在这种情况下,数组),其中值等于,例如,对于我的示例,2.请注意,结构可能同样包含字符或逻辑.现在,它只是找到所有与给定值相等的值,但将这个想法扩展到可以应用于结构中每个项目的任何逻辑值函数(这将允许例如is.na使用)将是很好的..
我想得到的是一个(integer)矩阵,其列数与somestr维数一样多(在本例中为3),以及多行(取决于上面的sample.int调用),因为有等于给定值的值( 2).此新矩阵somestr中的值是值等于2 的"坐标" .
我为将我的例子与解释混在一起道歉,但我希望这样更清楚.为了记录:我能够自己制作这个(甚至可以回答我自己的问题),但我希望有一个标准化的解决方案(阅读:在一些软件包中的现成功能),或者沿途学习新的技巧.
那么,总之,你能写一个函数吗?
posOf<-function(somestr, valueToCompareTo)
Run Code Online (Sandbox Code Playgroud)
返回somestr等于的位置矩阵valueToCompareTo,如果valueToCompareTo是函数,则somestr返回应用此函数返回的位置TRUE.
rcs*_*rcs 10
我认为该which功能可以做到这一点:
which(somestr==2, arr.ind=TRUE)
Run Code Online (Sandbox Code Playgroud)
(如果我理解正确的话)
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
484 次 |
| 最近记录: |