将几个论点传递给lapply的FUN(和其他应用)

(这一定是一个非常基本的问题,但到目前为止,我在R手册中找不到答案…)

当我使用lapply的语法lapply(input, myfun); – 这很容易理解,我可以这样定义myfun:

 myfun <- function(x) { # doing something here with x } lapply(input, myfun); 

并且input元素作为xparameter passing给myfun

但是如果我需要传递更多的参数给myfunc呢? 例如,它是这样定义的:

 myfun <- function(x, arg1) { # doing something here with x and arg1 } 

我怎样才能使用这个函数传递两个input元素(如x参数)和其他一些参数?

提前致谢!

如果你查看帮助页面, lapply一个参数是神秘的... 当我们查看帮助页面的参数部分时,我们find以下行:

 ...: optional arguments to 'FUN'. 

所以你所要做的就是把你的另一个参数作为参数包含在lapply调用中,如下所示:

 lapply(input, myfun, arg1=6) 

lapply ,认识到arg1不是一个它知道该怎么处理的参数,会自动将它传递给myfun 。 所有其他的applyfunction可以做同样的事情。

附录:当你编写自己的函数时,你也可以使用... 例如,假设您编写了一个函数,在某个时刻调用plot ,并且希望能够从函数调用中更改plot参数。 你可以在你的函数中包含每个参数作为参数,但这很烦人。 相反,你可以使用... (作为你的函数和调用它的内部调用的参数),并且有任何你的函数不能识别的参数被自动传递给plot

正如Alan所build议的,函数'mapply'将函数应用于多个多重列表或向量参数:

 mapply(myfun, arg1, arg2) 

请参见手册页: https : //stat.ethz.ch/R-manual/R-devel/library/base/html/mapply.html

您可以通过以下方式进行操作:

  myfxn <- function(var1,var2,var3){ var1*var2*var3 } lapply(1:3,myfxn,var2=2,var3=100) 

你会得到答案:

[[1]] [1] 200

[[2]] [1] 400

[[3]] [1] 600

Interesting Posts