2016-06-24 50 views
0

大家好我對r編程相當陌生,我想知道是否有人能幫助我。我只是在玩r,想要創建一個函數,它返回一個數據集中每列的方法向量,用戶可以將它作爲參數。問題是我試圖做到這一點,沒有意味着應用功能,所以我只是手動嘗試它,並感覺我非常接近完成它。只是想問一下,如果有人能檢查它,看看我犯了什麼錯誤。 這裏是我的代碼:試圖找到數據集中每列的平均值

findMeans<- function(data) 
{ 
    meanVec <- numeric() 
    for(i in 1:6) 
    { 
    mean=0 
    for(j in 1:153) 
    { 
     value=0 
     count=0 
     if(is.na(data[j,i])==FALSE) 
     { 
     value= value + data[i,j] 
     count=count+1 
     } 
     else 
     { 
     value= value +0 
     } 
    } 
    mean =value/count 
    meanVec[i]<-mean 


    } 
    meanVec 



} 

,當我嘗試列出向量它只是給這個

> meanVec 
numeric(0) 

任何人都可以擺脫可能什麼我做錯了一些輕?

+5

'colMeans'是一件事情。 – alistaire

+0

是的,我知道colMeans函數,我只是想做到這一點,沒有任何這些功能,並且練習我的循環和矢量創建 – yesman89

+1

如果練習被找到,可能提供數據作爲示例,準備運行或使用公共數據集參考?使用硬編碼的1:6和1:153循環建議識別下一個目標,試圖使自己成爲更通用的編碼解決方案,而不是使用通用的現成貢獻函數;-) – Dilettant

回答

0

如果你正在尋找函數寫作練習,並且已經知道了函數colMeans,我發現有幾個錯誤。

1)我認爲,當你從1:6開始時,你會經歷數據框中的每一列,而1:153,你正在經歷每一行。如果這是準確的,則應將value=0count = 0語句向上移動一級,mean = 0旁邊。否則,您將重置每行所經過的值爲零,這將不會執行任何操作,而是報告它遇到的最後一個值。

2)在行value= value + data[i,j]中,您需要改爲data[j,i]。您顛倒了行和列的值。

有了這兩項更改,您的函數似乎適用於具有6列和153行的數據集。對於更多的練習,我建議嘗試找到一種方法來概括任意數量的行和列的函數。

+0

非常感謝你的幫助! – yesman89