2016-06-24 6 views
0

こんにちは皆、私はかなりプログラミングに新しいです。誰かが私を助けてくれるのかと思っていました。私は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関数について知っています。私はちょうどそれらの種類の関数なしでそれをやりたいと思いますし、私のforループとベクトル作成を練習します。 – yesman89

+1

実践を求めるならば、データをサンプルとして提供するか、パブリックデータセットリファレンス?ハードコードされた1:6と1:153でループすると、一般的な既成の寄与関数を使用する代わりに、自分自身でソリューションをコーディングするときに、より一般的なものにしようとする次のターゲットを特定することを提案します;-) – Dilettant

答えて

0

function writing practiceを探していて、すでにcolMeans機能を認識している場合は、私が見つけたいくつかのエラーがあります。

1)データフレームの各列を1:6から、1:153、各行に移動しているとします。これが正確であれば、value=0count = 0のステートメントは、レベルを上に移動して、mean = 0の隣に移動する必要があります。それ以外の場合は、通過する行ごとに値をゼロにリセットします。最後の値を報告する以外は何も行いません。

2)value= value + data[i,j]の行には、代わりにdata[j,i]が必要です。行と列の値を逆にしました。

これらの2つの変更では、関数は6列と153行のデータセットに対して機能しているようです。より多くの練習をするには、任意の数の列と行に対して関数を一般化する方法を見つけることをお勧めします。

+0

ありがとう、助けてくれてありがとう! – yesman89

関連する問題