我有一个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)
如果要将多个参数传递给"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)