我在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)
而不是硬编码的位置。
答案 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))
看起来是什么样的,以了解正在发生的事情。