2013-05-17 48 views
1

Iam嘗試使用我自己的函數從數據框中計算多個值。該函數當前只返回一個數據幀中的一個值。看來我的for循環工作不正常。我也試圖把結果放在一個新的列表...在R中返回多個具有函數的值

我的數據框:

 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 
+0

它工作完美!謝謝 – dansan566

5

朱巴的回答解決了這個問題,但如果你想從你其實可以做一個函數返回多個不同的對象,太:

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