Nasıl düzeltilir: colmeans(x, na.rm = true) hatası: 'x' sayısal olmalıdır


R’yi kullanırken karşılaşabileceğiniz bir hata mesajı:

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

Bu hata genellikle R’de temel bileşen analizini gerçekleştirmek için prcomp() işlevini kullanmaya çalıştığınızda, kullandığınız veri çerçevesindeki bir veya daha fazla sütun sayısal olmadığında ortaya çıkar.

Bu hataya geçici bir çözüm bulmanın iki yolu vardır:

Yöntem 1: Sayısal olmayan sütunları sayısal sütunlara dönüştürme

Yöntem 2: Sayısal olmayan sütunları veri çerçevesinden kaldırın

Aşağıdaki örnekler her yöntemin pratikte nasıl kullanılacağını göstermektedir.

Hata nasıl yeniden oluşturulur?

Bir karakter sütunu içeren aşağıdaki veri çerçevesinde temel bileşen analizi yapmaya çalıştığımızı varsayalım:

 #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

Takım sütunu, prcomp() işlevini kullanmaya çalışırken hataya neden olan bir karakter sütunudur.

Yöntem 1: Sayısal olmayan sütunları sayısal sütunlara dönüştürme

Bu hatayı önlemenin bir yolu , prcomp() işlevini kullanmadan önce takım sütununu sayısal bir sütuna dönüştürmektir:

 #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

Bu sefer herhangi bir hata almıyoruz çünkü veri çerçevesindeki her sütun sayısaldır.

Yöntem 2: Sayısal olmayan sütunları veri çerçevesinden kaldırın

Hatayı önlemenin başka bir yolu da prcomp() işlevini kullanmadan önce sayısal olmayan tüm sütunları veri çerçevesinden kaldırmaktır :

 #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

Yine veri çerçevesindeki her sütun sayısal olduğundan herhangi bir hata almıyoruz.

Not : Çoğu durumda ilk yöntem tercih edilen çözümdür çünkü belirli sütunları kaldırmak yerine tüm verileri kullanır.

Ek kaynaklar

Aşağıdaki eğitimlerde R’deki diğer yaygın hataların nasıl düzeltileceği açıklanmaktadır:

R’de nasıl düzeltilir: bağımsız değişkenler farklı sayıda satır içerir
R’de nasıl düzeltilir: kullanılmayan bağımsız değişkenlerin seçiminde hata
R’de nasıl onarılır: değiştirmenin uzunluğu sıfırdır

Yorum ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir