如果你定义object
作为列表,您可以使用do.call
使用该列表作为子集函数的参数[
。如果将数组作为列表中的第一项包含在内,则可以调用[
直接地:
object <- list(A, a, b, c, d)
do.call(`[`, object)
## [,1] [,2]
## [1,] 13 22
## [2,] 14 23
如果您不想包含该数组(如果您有很多这些对象并且数组很大,则需要大量内存),您可以编写一个匿名函数以仅使用子集参数,而不是正在使用的参数子集:
object <- list(a, b, c, d)
do.call(function(...){A[...]}, object)
## [,1] [,2]
## [1,] 13 22
## [2,] 14 23
这实际上是正确的方法abind::asub
takes:
object <- list(a, b, c, d)
abind::asub(A, object)
## [,1] [,2]
## [1,] 13 22
## [2,] 14 23
注意,这里的参数匹配是关系型的,所以如果为空,则需要包含NULL
:
object <- list(NULL, b, c, d)
abind::asub(A, object)
## [,1] [,2]
## [1,] 13 22
## [2,] 14 23
## [3,] 15 24