如何在R中保存数组索引元组?

时间:2015-06-22 09:04:33

标签: r

我通过循环遍历它们来操纵R中的数组,例如:

arr <- array(runif(6), dim=c(2,3))
for (i in 1:2) {
  for (j in 1:3) {
    arr[i, j] <- arr[i, j] + 1
  }
}

在我的应用程序中,我有许多维度,并且在内部循环中操作多个数组(操作比添加1更复杂)。为了使代码更具可读性,我想以某种方式将元组[i, j]保存在一个对象中,比如idx,然后重用idx来访问数组。以下代码不起作用,但它最好地描述了我想在内循环中实现的内容:

idx <- c(i, j)             # this is wrong
arr[idx] <- arr[idx] + 1

我应该把什么代替上面的c(i, j)?请注意,我实际上处理的维度超过2个,例如[i, j, k, l, m, n]

1 个答案:

答案 0 :(得分:1)

这有点棘手,但只要将数组和索引包装在一个列表中,然后将它们组合到一个更大的列表中,就可以使用do.call

arr <- array(1:8,dim=c(2,2,2))
idx <- list(1,1,1)
do.call("[",c(list(arr),idx))
[1] 1
do.call("[",c(list(arr),list(1,2,1)))
[1] 3