我试图用数据框中的自己的函数计算多个值。该函数当前仅返回数据帧中的一个值。似乎我的for循环不能正常工作。我也尝试将结果放在一个新的列表中......
我的数据框:
A B C D E
ES -0.03 -0.08 -0.07 -0.03 -0.11
我的功能:
w <- function(x){
for(i in 1:length(x))
{
return( (1/x[i]) / (sum(1/x)) )
}
}
由于结果,公式是正确的。有没有人能解决我的问题?谢谢!
答案 0 :(得分:5)
您不应使用for
循环,而是将您的函数矢量化并将其直接应用于矢量。像这样:
R> v <- c(-0.03, -0.08, -0.07, -0.03, -0.11)
R> (1/v)/sum(1/v)
[1] 0.32506596 0.12189974 0.13931398 0.32506596 0.08865435
答案 1 :(得分:5)
Juba的答案解决了这个问题,但是如果你想从函数中返回多个不同的对象,你也可以实际做到这一点:
f <- function(x) {
m.x <- mean(x)
sd.x <- sd(x)
return(list(Mean = m.x, SD = sd.x))
}