修正方法:colmeans(x, na.rm = true) のエラー: 'x' は数値である必要があります


R の使用時に発生する可能性のあるエラー メッセージは次のとおりです。

 Error in colMeans(x, na.rm = TRUE): 'x' must be numeric

このエラーは通常、使用しているデータ フレーム内の 1 つ以上の列が数値でないときに、 prcomp()関数を使用してR で主成分分析を実行しようとしたときに発生します。

このエラーを回避するには 2 つの方法があります。

方法 1:数値以外の列を数値列に変換する

方法 2:データ フレームから数値以外の列を削除する

次の例は、各メソッドを実際に使用する方法を示しています。

エラーを再現する方法

文字の列を含む次のデータ フレームに対して主成分分析を実行しようとしているとします。

 #create data frame
df <- data. frame (team=c('A', 'A', 'C', 'B', 'C', 'B', 'B', 'C', 'A'),
                 points=c(12, 8, 26, 25, 38, 30, 24, 24, 15),
                 rebounds=c(10, 4, 5, 5, 4, 3, 8, 18, 22))

#view data frame
df

  team points rebounds
1 to 12 10
2 to 8 4
3 C 26 5
4 B 25 5
5 C 38 4
6 B 30 3
7 B 24 8
8 C 24 18
9 to 15 22

#attempt to calculate principal components
prcomp(df)

Error in colMeans(x, na.rm = TRUE): 'x' must be numeric

チーム列はキャラクター列であるため、 prcomp()関数を使用しようとするとエラーが発生します。

方法 1: 数値以外の列を数値列に変換する

このエラーを回避する 1 つの方法は、 prcomp()関数を使用する前にチーム列を数値列に変換することです。

 #convert character column to numeric
df$team <- as. numeric (as. factor (df$team))

#view updated data frame
df

  team points rebounds
1 1 12 10
2 1 8 4
3 3 26 5
4 2 25 5
5 3 38 4
6 2 30 3
7 2 24 8
8 3 24 18
9 1 15 22

#calculate main components
prcomp(df)

Standard deviations (1, .., p=3):
[1] 9.8252704 6.0990235 0.4880538

Rotation (nxk) = (3 x 3):
                 PC1 PC2 PC3
team -0.06810285 0.04199272 0.99679417
points -0.91850806 0.38741460 -0.07907512
rebounds 0.38949319 0.92094872 -0.01218661

データ フレームの各列は数値であるため、今回はエラーは発生しません。

方法 2: データ フレームから数値以外の列を削除する

エラーを回避するもう 1 つの方法は、 prcomp()関数を使用する前に、データ フレームから数値以外の列をすべて削除することです

 #remove non-numeric columns from data frame
df_new <- df[ , unlist(lapply(df, is. numeric ))]

#view new data frame
df_new

  rebound points
1 12 10
2 8 4
3 26 5
4 25 5
5 38 4
6 30 3
7 24 8
8 24 18
9 15 22

#calculate main components
prcomp(df_new)

Standard deviations (1, .., p=2):
[1] 9.802541 6.093638

Rotation (nxk) = (2 x 2):
                PC1 PC2
points 0.9199431 0.3920519
rebounds -0.3920519 0.9199431

繰り返しますが、データ フレームの各列は数値であるため、エラーは発生しません。

: ほとんどの場合、最初の方法は特定の列を削除するのではなくすべてのデータを使用するため、推奨される解決策です。

追加リソース

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

R での修正方法: 引数に異なる行数が含まれる
R での修正方法: 未使用の引数を選択する際のエラー
R での修復方法: 置換の長さはゼロです

コメントを追加する

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