如何使用带有多个输入的函数的apply()?

Sav*_*SUS 4 r function apply

我有一个10 x 5的数据帧和一个接收2个输入a和的功能b.

a是一个向量,b是一个整数.

该函数fun计算向量的平均值a并将其乘以b并返回结果.在下面的代码中,我尝试apply()将此函数用于每一列,x但它似乎不起作用.请帮忙!

x = data.frame(rnorm(10), rnorm(10), rnorm(10), rnorm(10), rnorm(10))

fun = function(a, b)
{
  c = mean(a) * b
  return(c)
}

apply(x, 2, fun(x,2))
Run Code Online (Sandbox Code Playgroud)

42-*_*42- 7

如果要将多个参数传递给"apply"-ied函数,其中一个是列向量而另一个是常量,则可以通过两种方式完成:

apply(x, 2, fun, b=2)
Run Code Online (Sandbox Code Playgroud)

要么:

apply(x, 2, function(x) {fun(x, 2)} )
Run Code Online (Sandbox Code Playgroud)

R的可能看似奇怪的行为是表达式fun(x,2)不是函数,function(x) {fun(x, 2)}而是.

 apply(x, 2, fun, b=2)
 #------------------
  rnorm.10. rnorm.10..1 rnorm.10..2 rnorm.10..3 rnorm.10..4 
-0.06806881  0.32749640 -0.14400234 -0.41493410 -0.02669955 
Run Code Online (Sandbox Code Playgroud)

  • 没错,这里不需要使用curley braces,但是多步程序需要它们,我认为最好显示newbs如何使用它们. (3认同)