【发布时间】:2019-07-21 00:47:09
【问题描述】:
我有这个数组:
arr <- array(data = c(0.1, 0.52, 0.3, 0.4, 0.15, 0.2, 0.7, 0.8), dim = c(2, 2, 2))
> arr
, , 1
[,1] [,2]
[1,] 0.10 0.3
[2,] 0.52 0.4
, , 2
[,1] [,2]
[1,] 0.15 0.7
[2,] 0.20 0.8
我想测试 arr[,,1] 和 [,,2] 的对应值中是否有 > 0.5 的值,如果不返回 NA,则返回它。 适用于 0.10 ; 0.15(在这种情况下返回 NA,因为它们都不 > 0.5)然后转到 0.3;0.7(返回 0.7,因为它在元素中 > 0.5)等等
我的愿望输出1矩阵2*2:
res1= #resturn the value
[,1] [,2]
[1,] NA 0.7
[2,] 0.52 0.8
和另一个矩阵 2*2 来显示索引 res2= 返回该值的索引
[,1] [,2]
[1,] NA 1
[2,] 1 2
1 表示 0.7 来自第一个矩阵 arr[,,1]
2 表示 0.8 来自第二个矩阵 arr[,,2] 等
【问题讨论】:
-
要清楚,您不只是想知道
which(arr>0.5)是否为非空。您希望返回一个形状相同的数组,其中 NA 被替换为 arr。我编辑了你的标题以反映这一点。 -
谢谢@smci 不是真的。我不想返回具有相同形状的相同数组。但我想应用到所有元素,而不是一一应用,例如:应用到 0.10; 0.3(在这种情况下返回 NA,因为它们都不 > 0.5)然后转到 0.3;0.7(返回 0.7,因为它在元素上 > 0.5)等等。
-
Tpellim 那么简单地做
which(arr>0.1)、which(arr>0.3)甚至for (a in seq(0.1,1.9,0.2)) { which(arr>a) }有什么问题...请更清楚地说明输出应该是什么以及它应该具有什么形状,因为a?的所有步骤? -
我想像 this
mxd=apply(arr, c(1, 2), sum)一样申请,但不是求和,而是看是否有 >0.5。输出是一个 2*2 相同形状的矩阵,是的。 -
好的,但您不希望输出只是
which(arr>0.5)返回的一维向量。能否请您修改标题以表达您要查找的内容?