【发布时间】:2011-11-04 11:08:09
【问题描述】:
假设我有一个简单的多维结构,像这样:
somestr<-array(sample.int(2, 120, replace=TRUE), dim=c(4,5,6))
我正在查找结构(在本例中为数组)中值等于 2 的所有位置,例如我的示例。请注意,该结构也可以保存字符或逻辑。目前,它只找到等于给定值的所有值,但最好将这个想法扩展到任何可以应用于结构中每个项目的逻辑值函数(这将允许例如is.nato使用)。
我想要得到的是一个 (integer) 矩阵,其列数与 somestr 的维度(在本例中为 3)和行数(取决于上面的 sample.int 调用)一样多存在等于给定值 (2) 的值。这个新矩阵中的值是somestr 中的“坐标”,其中的值等于 2。
对于将我的示例与解释混为一谈,我深表歉意,但我希望这样会更清楚。郑重声明:我可以自己制作(甚至可以回答我自己的问题),但我希望有一个标准化的解决方案(阅读:某个包中的现成函数),或者在此过程中学习新技巧。
那么,简而言之,你能不能写一个函数
posOf<-function(somestr, valueToCompareTo)
返回somestr 中等于valueToCompareTo 的位置矩阵,如果valueToCompareTo 是一个函数,则应用此函数的somestr 中的位置返回TRUE。
【问题讨论】:
-
somestr有 3 个维度;这与“我想要得到的是一个(整数)矩阵,其列数与 somestr 的列数以及与给定值 (2) 相等的值的行数一样多。这个新的值矩阵是 somestr 内的坐标值等于 2。"??? -
@Gavin:我不明白它是怎么做到的。尽管如此,我还是做了一些编辑,希望能澄清一下。
-
somestr没有三列,数组的每个切片都有五列,至少来自您的示例(dim = c(4,5,6))!您是指三个维度吗?这就是让我感到困惑的地方。我最初的猜测是直接使用which(...., arr.ind = TRUE)或arrayInd(..., .dim = 1:3),但这似乎与描述不符。 -
已编辑。抱歉,星期五一定很糟糕。
标签: r multidimensional-array position