如何将列表传递给R中的函数?

Dav*_*uer 15 r function

我一直难以找到有关如何将列表传递给R中的函数的信息.

我之前使用过这种方法,例如

plot(list(x=1,y=1))
Run Code Online (Sandbox Code Playgroud)

但是以下示例给出了一个错误:

foo <- function(a, b) c <- a + b
foo(list(a=1,b=1))

Error in foo(list(a = 1, b = 1)) : 
   argument "b" is missing, with no default
Run Code Online (Sandbox Code Playgroud)

此外,?function不起作用,help('function')也不提供有关将列表传递给函数的信息.

更新

为了澄清,我理解如何使用列表作为单个参数,但我感到困惑,因为我的印象是函数的属性是多个参数可以作为列表传递.看来这种印象不正确.相反,许多函数专门用于处理列表,如下面的注释和答案中所述.

Sam*_*eer 29

使用do.call

foo <- function(a, b)  a + b

do.call(foo, list(a=1,b=1))
Run Code Online (Sandbox Code Playgroud)

或者你可以做

foo <- function(l) l$a + l$b

foo(list(a=1,b=1))
Run Code Online (Sandbox Code Playgroud)


Mai*_*ura 5

你的函数有两个参数,但你只传递一个,因此错误.

您可以像这样修改代码:

foo <- function(a) c <- a[[1]] + a[[2]]
foo(list(a=1,b=1))
Run Code Online (Sandbox Code Playgroud)