将列表转换为R中的"两个或更多对象"参数

Art*_*hur 9 arguments r

我必须在R中调用一个以"2个或更多对象"作为输入的函数,因此函数定义为:

function(..., all = TRUE, <other named parameters>)

其中......定义为 2 or more objects

我的问题是我的对象在一个列表中,我正在根据我想做的事情使用不同数量的对象.因此,如果我的列表有3个元素,例如我必须这样做:

function(list[[1]], list [[2]], list[[3]])

无论列表中的元素数量是多少,我怎么能这样做呢?

Jor*_*eys 8

你可以使用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)


Jos*_*ich 6

一个例子会有所帮助,但我很确定你正在寻找do.call:

do.call(function, c(list, list(all=TRUE, <other named parameters>)))
Run Code Online (Sandbox Code Playgroud)