【发布时间】:2022-01-20 16:23:29
【问题描述】:
我有一个三维数组 x 创建为:
vector1 <- c(5, 9, 2)
vector2 <- c(10, 11, 12, 13, 14, 15)
x <- array(c(vector1, vector2), dim = c(3, 3, 2))
print(x)
, , 1
[,1] [,2] [,3]
[1,] 5 10 13
[2,] 9 11 14
[3,] 2 12 15
, , 2
[,1] [,2] [,3]
[1,] 5 10 13
[2,] 9 11 14
[3,] 2 12 15
我需要找到坐标,即数组最小元素的三个维度位置。这就是我所做的:
which.min(x)
[1] 16
x[16]
[1] 2
现在我知道哪个是最小数字,但我如何找到这个数字的坐标(即 [3,1,2])? 我已经试过了
which(x == 2, arr.ind = TRUE)
但输出是这样的:
dim1 dim2 dim3
我怎样才能得到我正在寻找的东西?
【问题讨论】:
-
请检查数组的值。即如果值为
2.000001,==将返回 FALSE。该值可能不完全等于 2。尝试使用which(x == min(x), arr.ind = TRUE) -
请发布一个可重现的示例,即我们可以剪切和粘贴以查看您所看到的示例。
-
我试过了,但它仍然在输出:dim1 dim2 dim3
-
感谢您在其中编辑代码。当我运行
which(x == min(x), arr.ind = TRUE)时,我将两个解决方案打印为两行矩阵:[1,] 3 1 1和[2,] 3 1 2。 -
嗨,你说得对。我的数组和这个不一样。我只是使用了这个,因为它更容易理解,但我的一定有问题。谢谢!
标签: r arrays matrix vector indexing