我必须在R中调用一个以"2个或更多对象"作为输入的函数,因此函数定义为:
function(..., all = TRUE, <other named parameters>)
其中......定义为 2 or more objects
我的问题是我的对象在一个列表中,我正在根据我想做的事情使用不同数量的对象.因此,如果我的列表有3个元素,例如我必须这样做:
function(list[[1]], list [[2]], list[[3]])
无论列表中的元素数量是多少,我怎么能这样做呢?
你可以使用do.call,因为它接受一个参数列表并将它们应用于函数.例如对于rbind:
X <- list(A=1:3,B=4:6,C=7:9)
do.call(rbind,X)
[,1] [,2] [,3]
A 1 2 3
B 4 5 6
C 7 8 9
Run Code Online (Sandbox Code Playgroud)
请注意,如果您需要额外的参数,您也应该将它们添加到列表中.见例如:
X <- list(A=list(A1=1:2,A2=3:4),B=list(B1=5:6,B2=7:8))
do.call(c,X) # Returns a list
do.call(c,X,recursive=TRUE) # Gives an error
do.call(c,c(X,list(recursive=TRUE)))
A.A11 A.A12 A.A21 A.A22 B.B11 B.B12 B.B21 B.B22
1 2 3 4 5 6 7 8
Run Code Online (Sandbox Code Playgroud)
一个例子会有所帮助,但我很确定你正在寻找do.call:
do.call(function, c(list, list(all=TRUE, <other named parameters>)))
Run Code Online (Sandbox Code Playgroud)