使用R中的函数返回多个值

时间:2013-05-17 12:23:27

标签: r function dataframe

我试图用数据框中的自己的函数计算多个值。该函数当前仅返回数据帧中的一个值。似乎我的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)) )
        }
} 

由于结果,公式是正确的。有没有人能解决我的问题?谢谢!

2 个答案:

答案 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))
}