【问题标题】:Return multiple values with function in R在R中使用函数返回多个值
【发布时间】:2013-05-17 12:23:26
【问题描述】:

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

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

【问题讨论】:

  • 您要计算的内容并不完全清楚。在分母中,您是要对每一列的值求和,还是对每一行的值求和?

标签: r function dataframe


【解决方案1】:

您不应该使用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

【讨论】:

    【解决方案2】:

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

    f <- function(x) {
      m.x <- mean(x)
      sd.x <- sd(x)
      return(list(Mean = m.x, SD = sd.x))
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-14
      • 2012-06-06
      • 2019-05-10
      • 2020-05-04
      • 1970-01-01
      相关资源
      最近更新 更多