将几个论点传递给lapply的FUN(和其他应用)
(这一定是一个非常基本的问题,但到目前为止,我在R手册中找不到答案…)
当我使用lapply的语法lapply(input, myfun);
– 这很容易理解,我可以这样定义myfun:
myfun <- function(x) { # doing something here with x } lapply(input, myfun);
并且input
元素作为x
parameter 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
。 所有其他的apply
function可以做同样的事情。
附录:当你编写自己的函数时,你也可以使用...
例如,假设您编写了一个函数,在某个时刻调用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