R'de nasıl düzeltilir: abone olunan atamalarda eksik değerlere izin verilmez
R’yi kullanırken karşılaşabileceğiniz bir hata mesajı:
Error in `[<-.data.frame`(`*tmp*`, df$A == 5, , value = list(A = c(NA, : missing values are not allowed in subscripted assignments of data frames
Bu hata genellikle bir sütundaki değerleri başka bir sütundaki değerleri kullanarak atamaya çalıştığınızda ortaya çıkar, ancak NA değerleri mevcuttur.
Aşağıdaki örnekte bu hatanın pratikte nasıl çözüleceği gösterilmektedir.
Hata nasıl yeniden oluşturulur?
R’de aşağıdaki veri çerçevesini oluşturduğumuzu varsayalım:
#create data frame
df <- data. frame (A=c(3, 4, 4, NA, 5, 8, 5, 9),
B=c(12, 13, 7, 7, 12, 11, 15, 7))
#view data frame
df
AB
1 3 12
2 4 13
3 4 7
4 NA 7
5 5 12
6 8 11
7 5 15
8 9 7
Şimdi, A sütunundaki karşılık gelen değerin 5 olduğu B sütunundaki her satıra 10 değerini atamaya çalıştığımızı varsayalım:
#attempt to assign column B a value of 10 where A is equal to 5
df[df$A == 5, ]$B <- 10
Error in `[<-.data.frame`(`*tmp*`, df$A == 5, , value = list(A = c(NA, :
missing values are not allowed in subscripted assignments of data frames
A sütununda NA değerleri olduğu için bir hata alıyoruz ve hata mesajı bize veri çerçevelerinin alt simge atamalarında eksik değerlere izin verilmediğini açıkça söylüyor.
Hata nasıl önlenir
Bu hatayı önlemenin iki yolu vardır.
1. %in% operatörünü kullanın
Bu hatayı önlemenin bir yolu, atamayı gerçekleştirirken %in% operatörünü kullanmaktır:
#assign column B a value of 10 where A is equal to 5 df[df$A %in% 5,]$B <- 10 #view updated data frame df AB 1 3 12 2 4 13 3 4 7 4 NA 7 5 5 10 6 8 11 7 5 10 8 9 7
B sütunundaki her satıra 10 değerinin atandığını, A sütunundaki karşılık gelen değerin 5 olduğunu ve hiçbir hata almadığımızı unutmayın.
2. is.na()’yı kullanın
Bu hatayı önlemenin başka bir yolu da atamayı gerçekleştirirken is.na() işlevini kullanmaktır:
#assign column B a value of 10 where A is equal to 5
df[!is. na (df$A) & df$A == 5, ]$B <- 10
#view updated data frame
df
AB
1 3 12
2 4 13
3 4 7
4 NA 7
5 5 10
6 8 11
7 5 10
8 9 7
Yine A sütununda karşılık gelen değer 5 iken B sütunundaki her satıra 10 değerini atayabiliyoruz ve hiçbir hata almıyoruz.
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