R での修正方法: dim(x) は正の長さでなければなりません


R で発生する可能性のあるエラーは次のとおりです。

 Error in apply(df$var1, 2, mean): dim(X) must have a positive length 

このエラーは、データ フレームまたは行列の代わりにベクトルを引数として指定しながら、 apply()関数を使用してデータ フレームまたは行列の列のメトリックを計算しようとすると発生します。

このチュートリアルでは、このエラーを修正する方法を正確に説明します。

エラーを再現する方法

R に次のデータ フレームがあるとします。

 #create data frame
df <- data. frame (points=c(99, 97, 104, 79, 84, 88, 91, 99),
                 rebounds=c(34, 40, 41, 38, 29, 30, 22, 25),
                 blocks=c(12, 8, 8, 7, 8, 11, 6, 7))

#view data frame
df

  points rebound blocks
1 99 34 12
2 97 40 8
3 104 41 8
4 79 38 7
5 84 29 8
6 88 30 11
7 91 22 6
8 99 25 7

ここで、 apply()関数を使用して「points」列の平均値を計算しようとするとします。

 #attempt to calculate mean of 'points' column
apply(df$points, 2, mean)

Error in apply(df$points, 2, mean): dim(X) must have a positive length

apply()関数はデータ フレームまたは行列に適用する必要があるため、エラーが発生しますが、この例ではデータ フレーム内の特定の列に適用しようとしています。

エラーを修正する方法

このエラーを修正する方法は、次のようにデータ フレームの名前をapply()関数に指定するだけです。

 #calculate mean of every column in data frame
apply(df, 2, mean)

  points rebound blocks 
  92,625 32,375 8,375 

出力から、データ フレーム内の各列の平均値がわかります。たとえば、「ポイント」列の平均値は92,625です。

この関数を使用して、データ フレーム内の特定の値の平均のみを見つけることもできます。

 #calculate mean of 'points' and 'blocks' column in data frame
apply(df[c(' points ', ' blocks ')], 2, mean)

point blocks 
92,625 8,375

最後に、単一列の平均を見つけたい場合は、 apply()関数をまったく使用せずにMean()関数を使用できます。

 #calculate mean of 'points' column
mean(df$points)

[1] 92,625

追加リソース

次のチュートリアルでは、R の他の一般的なエラーを解決する方法について説明します。

R での修正方法: 名前が以前の名前と一致しない
R での修正方法: 長いオブジェクトの長さが短いオブジェクトの長さの倍数ではありません
R での修正方法: コントラストは 2 レベル以上の因子にのみ適用できます。

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です