R - 如何通过索引向量获得多维数组的值

nie*_*aki 13 r

假设我有一个多维数组pi,并且在运行时之前它的维数是未知的:

dims <- rep(3, dim_count)
pi <- array(0, dims)
Run Code Online (Sandbox Code Playgroud)

如您所见,尺寸计数取决于dim_count.当我有索引向量时,如何从数组中检索值?例如,当我有:

dim_count <- 5
indexes <- c(1, 2, 3, 3, 3)
Run Code Online (Sandbox Code Playgroud)

我想要检索

pi[1, 2, 3, 3, 3]
Run Code Online (Sandbox Code Playgroud)

有这么简短,有效且有希望的优雅方式吗?

flo*_*del 15

利用一些鲜为人知的用法[:

当通过[单个参数索引数组时,i可以是具有与维度一样多的列的矩阵x; 结果是一个向量,其元素对应于每行中的索引集i.

你可以简单地做:

pi[matrix(indexes, 1)]
Run Code Online (Sandbox Code Playgroud)


Ben*_*ker 10

do.call("[",...) 似乎工作.

indexes <- c(1,2,3,3,3)
pi[1,2,3,3,3] <- 17  ## so we know if we succeeded or not
do.call("[",c(list(pi),as.list(indexes)))
Run Code Online (Sandbox Code Playgroud)

请注意,您的示例不起作用 - 您的维度全部为3,但您的某些索引元素> 3 ...