通过其位置向量访问多维数组元素

时间:2014-11-07 18:24:28

标签: r

我在R中寻找以下问题的解决方案:

我想创建能够在多维数组上运算的算法 - 其中维数是算法的输入。

因此,我想使用向量访问此类数组的一些元素。

例如:

> x = array(1:8, replicate(3,2))
> x
, , 1

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

, , 2

     [,1] [,2]
[1,]    5    7
[2,]    6    8

> x[1,2,2]
[1] 7

我想替换

x[1,2,2]

使用

的东西
y = c(1,2,2)

而不是硬编码的位置。

2 个答案:

答案 0 :(得分:2)

您也可以按矩阵编制索引。这意味着你可以做到

x[t(y)]
# [1] 7

如果您按范围索引,则会有不同的行为。我不是在建立索引的上下文中,因此很难确切地说出最适合您情况的内容。

答案 1 :(得分:1)

您可以使用以下内容:

do.call(`[`, c(list(x), as.list(y)))
# [1] 7

do.call允许您使用作为列表提供的参数调用任何函数。看看c(list(x), as.list(y))看起来是什么样的,以了解正在发生的事情。