R:子集化N维阵列 [英] R: subsetting N-dimensional arrays
本文介绍了R:子集化N维阵列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
考虑以下三维数组:
set.seed(123)
arr = array(sample(c(1:10)), dim=c(3,4,2))
收益率
> arr
, , 1
[,1] [,2] [,3] [,4]
[1,] 10 9 8 2
[2,] 5 1 4 10
[3,] 6 7 3 5
, , 2
[,1] [,2] [,3] [,4]
[1,] 6 7 3 5
[2,] 9 8 2 6
[3,] 1 4 10 9
我想将其分类为
arr[c(1,2), c(2,4), c(1)]
但问题是,我不知道(a)哪些指数或(b)指数的维度。
but the catch is that I don't know (a) which indices or (b) which dimension the indices are.
访问的最佳方式是什么带索引变量的N维数组?
ll = list(c(1,2), c(2,4), c(1))
arr[ll] # doesn't work
arr[grid.expand(ll)] # doesn't work
# ..what else?
推荐答案
使用 do.call
,例如:
do.call(`[`, c(list(arr), ll))
或更干净利用包装函数:
or more cleanly, using a wrapper function:
getArr <- function(...)
`[`(arr, ...)
do.call(getArr, ll)
[,1] [,2]
[1,] 10 5
[2,] 7 3
这篇关于R:子集化N维阵列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文