R:子集化N维阵列 [英] R: subsetting N-dimensional arrays

查看:124
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆