R'de nasıl düzeltilir: argüman ne sayısal ne de mantıksal: return na
R’de karşılaşabileceğiniz bir uyarı:
Warning message: In mean.default(df): argument is not numeric or logical: returning NA
Bu uyarı, R’de sayısal veya mantıksal olmayan bir nesnenin ortalaması alınmaya çalışıldığında ortaya çıkar.
Bu eğitimde bu uyarının pratikte nasıl ele alınacağı açıklanmaktadır.
Uyarı nasıl yeniden oluşturulur?
R’de aşağıdaki veri çerçevesini oluşturduğumuzu varsayalım:
#create data frame
df <- data. frame (team=c('A', 'B', 'C', 'D', 'E'),
points=c(99, 90, 86, 88, 95),
assists=c(33, 28, 31, 39, 34),
rebounds=c(30, 28, 24, 24, 28))
#view data frame
df
team points assists rebounds
1 A 99 33 30
2 B 90 28 28
3 C 86 31 24
4 D 88 39 24
5 E 95 34 28
Bir karakter sütununun ortalamasını almaya çalışırsak veya tüm veri çerçevesinin ortalamasını almaya çalışırsak bir uyarı alırız:
#attempt to calculate mean of character column
mean(df$team)
Warning message:
In mean.default(df$team): argument is not numeric or logical: returning NA
#attempt to calculate mean of entire data frame
mean(df)
Warning message:
In mean.default(df): argument is not numeric or logical: returning NA
Mean() işlevi argüman olarak yalnızca sayısal bir vektör alır, bu nedenle her iki senaryoda da uyarı alırız.
Uyarı nasıl ele alınır?
Bu uyarıyı ele almanın yolu Mean() işlevini yalnızca sayısal vektörlerle kullanmaktır.
Örneğin puan sütununun ortalamasını sayısal olduğu için hesaplayabiliriz:
#calculate mean of points column
mean(df$points)
[1] 91.6
Veya veri çerçevesindeki her sütunun ortalamasını hesaplamak için sapply() işlevini kullanabiliriz:
#calculate mean of every column in data frame
sapply(df, mean, 2)
team points assists rebounds
NA 90 33 28
Warning message:
In mean.default(X[[i]], ...):
argument is not numeric or logical: returning NA
Her bir sayısal sütunun ortalamasını hesaplayabiliyoruz ancak “takım” karakter sütununun ortalamasını hesaplamaya çalıştığımız için yine de bir uyarı mesajı alıyoruz.
Bu uyarıyı tamamen önlemek için sapply() fonksiyonunu yalnızca üç sayısal sütunla kullanabiliriz:
#calculate mean of each numeric column
sapply(df[c(' points ', ' assists ', ' rebounds ')], mean, 2)
points assists rebounds
90 33 28
Her sayısal sütunun ortalamasının başarıyla görüntülendiğini ve herhangi bir uyarı mesajı almadığımızı unutmayın.
Ek kaynaklar
Aşağıdaki eğitimlerde R’deki diğer yaygın hataların nasıl düzeltileceği açıklanmaktadır:
“Koşulun uzunluğu > 1 ve yalnızca ilk öğe kullanılacak” sorununu düzeltme
Nasıl düzeltilir? İkili operatörün sayısal olmayan bağımsız değişkeni
Nasıl düzeltilir? dim(X) pozitif uzunluğa sahip olmalıdır
Nasıl düzeltilir? Kullanılmayan bağımsız değişkenlerin seçilmesinde hata