2016-04-14 7 views
0

のために私は、以前の質問を確認しましたが、長さが無効ですエラーは初心者

columnmean<-function(y){ 
    n<-ncol(y) 
    means<-numeric(n) 
    for(i in 1:n){ 
     means[i]<-mean(y[,i]) 
    } 
    means} 

私は単にエラーを理解することはできませんが、でも、コードは右のようで答えを見つけることができませんでした。

columnmean<-function(y){ 
    n <- ncol(y) 
    means <- numeric(n) 
    for(i in 1:n) { 
    means[i] <- mean(y[,i]) 
    } 
    means 
} 
columnmean(1:10) 

yがベクトルの場合ncol(y)の結果はNULLです:私の入力は、この行のnの値

means[i]<-mean(y[,i]) 
+1

データの各列の平均値を取得したいと思いますか?なぜこの適用を使用しないのですか(あなたのデータ名、2、平均)。ただし、そのループを使用する場合は、エラーを再現して何が間違っているかを確認できるようにデータを追加してください。 3行目はas.numericでなければならないと思います。ループを実行する前に行列を作成する必要があります。これは、データ出力と同じ次元の行列です。 –

+1

組み込み関数 'colMeans'を使わないのはなぜですか?助けが必要な場合は、再現性のある最小限のコード(例えば、 'dput'を使ってデータ付き)を与えるべきです。 – DeveauP

+0

@Learner:3行目が正しいです。長さnの空の数値ベクトルが作成され、forループ。そして、各列に対して平均を実行すると、行列ではなくベクトルが得られます。 – DeveauP

答えて

2

ここでは、エラーの再現である場合にも、私はいくつかの寸法誤差を取得します。関数内の次の計算でエラーが発生します。
また、colMeans(1:10)はエラーを引き起こします(引数の内部チェックが優れているために別のエラーが発生します)。

したがって、コードが(即ち、一次元のみでyベクトル~~>誤差)

columnmean(BOD) 
# [1] 3.666667 14.833333 

エラーがyから依存.:、例えば二次元のデータ用です。