我一直难以找到有关如何将列表传递给R中的函数的信息。
我之前使用过这种方法,例如
plot(list(x=1,y=1))
但以下示例给出了一个错误:
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
此外,?function
不起作用,help('function')
不提供有关将列表传递给函数的信息。
更新
为了澄清,我理解如何使用列表作为单个参数,但我感到困惑,因为我的印象是函数的属性是多个参数可以作为列表传递。看来这种印象不正确。相反,许多函数专门用于处理列表,如下面的注释和答案中所述。
答案 0 :(得分:28)
使用do.call
foo <- function(a, b) a + b
do.call(foo, list(a=1,b=1))
或者你可以做
foo <- function(l) l$a + l$b
foo(list(a=1,b=1))
答案 1 :(得分:5)
你的函数有两个参数,但你只传递一个,因此错误。
您可以像这样修改代码:
foo <- function(a) c <- a[[1]] + a[[2]]
foo(list(a=1,b=1))