1

为什么这不起作用?还是只是 R 的工作方式?

谢谢JJ

    a <- c(1,2,3)
    b <- 5
    lapply(a, function(x) print(x))  # works

    lapply(a, function(x,b) print(b)) # doesn't work.

    I get --
     Error in FUN(c(1, 2, 3)[[1L]], ...) : 
       argument "b" is missing, with no default
4

2 回答 2

3

lapply只传递一个参数,因为它的设计目的是让一个参数变化。如果您只想传递额外的参数,请将它们作为附加选项lapply

lapply(a, function(x,y) print(y), y=b)
[1] 5
[1] 5
[1] 5
[[1]]
[1] 5

[[2]]
[1] 5

[[3]]
[1] 5

lapply帮助文件:

... FUN 的可选参数。

如果您希望将多个不同的参数传递给您的函数,请查看mapply.

于 2012-04-28T15:04:33.850 回答
2

您可以尝试将 a 和 b 放在一个列表中,如下所示:

lapply(list(a, b), function(x) print(b)) 

或指定一个参数以将 b 传递给,如下所示:

lapply(a, function(x, y=b) print(y))

但我不确定你在追求什么。

于 2012-04-28T14:52:39.293 回答