通过apply将参数传递给迭代函数

Pro*_*nis 31 r

我有一个像这个假人的功能:

FUN <- function(x, parameter){
  if (parameter == 1){
      z <- DO SOMETHING WITH "x"}
  if (parameter ==2){
      z <- DO OTHER STUFF WITH "x"}
return(z)
}
Run Code Online (Sandbox Code Playgroud)

现在,我想使用apply在数据集上使用该函数.问题是,那apply(data,1,FUN(parameter=1))

不会工作,因为FUN不知道"x"是什么.有没有办法告诉申请以"x"作为当前行/ col来调用FUN?`

Jos*_*ich 31

你想要的apply(data,1,FUN,parameter=1).注意...函数定义:

> args(apply)
function (X, MARGIN, FUN, ...) 
NULL
Run Code Online (Sandbox Code Playgroud)

以及文档中的相应条目:

...:'FUN'的可选参数.


Cha*_*ase 17

你可以在调用中创建一个匿名函数,apply以便FUN知道"x"是什么:

apply(data, 1, function(x) FUN(x, parameter = 1))
Run Code Online (Sandbox Code Playgroud)

请参阅?apply底部使用此方法的示例.