1

我正在尝试使用我自己的函数从数据框中计算多个值。该函数当前仅返回数据框中的一个值。看来我的 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)) )
        }
} 

由于结果,公式是正确的。有人对我的问题有解决方案吗?谢谢!

4

2 回答 2

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
于 2013-05-17T12:27:13.797 回答
5

Juba 的回答解决了这个问题,但是如果你想从一个函数返回多个不同的对象,你实际上也可以这样做:

f <- function(x) {
  m.x <- mean(x)
  sd.x <- sd(x)
  return(list(Mean = m.x, SD = sd.x))
}
于 2013-05-17T12:37:39.593 回答