假设我有一个多维数组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 ...