R hatası nasıl ele alınır: $ operatörü atomik vektörler için geçerli değil


R’de karşılaşabileceğiniz yaygın bir hata:

 $ operator is invalid for atomic vectors

Bu hata, $ operatörünü kullanarak atomik bir vektörün bir öğesine erişmeye çalıştığınızda ortaya çıkar.

Bir “atomik vektör”, R’deki c() veya vektör() işlevleri kullanılarak oluşturulan herhangi bir tek boyutlu veri nesnesidir.

Maalesef $ atomik vektörlerin elemanlarına erişmek için kullanılamaz. Bunun yerine çift parantez [[]] veya getElement() işlevini kullanmalısınız.

Bu eğitimde bu hatanın pratikte nasıl ele alınacağına ilişkin örnekler paylaşılmaktadır.

Hata mesajı nasıl yeniden oluşturulur?

R’de aşağıdaki vektörün bir öğesine erişmek için $ operatörünü kullanmaya çalıştığımızı varsayalım:

 #definevector
x <- c(1, 3, 7, 6, 2)

#provide names
names(x) <- c('a', 'b', 'c', 'd', 'e')

#display vector
x

a B C D E
1 3 7 6 2

#attempt to access value in 'e'
x$e

Error in x$e: $ operator is invalid for atomic vectors

Atomik vektörlerin elemanlarına erişmek için $ operatörünün kullanılması geçerli olmadığından bir hata alıyoruz. Ayrıca vektörümüzün gerçekten atomik olup olmadığını da kontrol edebiliriz:

 #check if vector is atomic
is. atomic (x)

[1] TRUE

Yöntem #1: Çift Parantez Kullanarak Öğelere Erişim

Bir vektördeki öğelere adlarına göre erişmenin bir yolu , [[]] gösterimini kullanmaktır:

 #definevector
x <- c(1, 3, 7, 6, 2)

#provide names
names(x) <- c('a', 'b', 'c', 'd', 'e')

#access value for 'e'
x[['e']]

[1] 2

Yöntem #2: getElement() Kullanarak Öğelere Erişim

Bir vektördeki öğelere adlarına göre erişmenin başka bir yolu da getElement() gösterimini kullanmaktır:

 #definevector
x <- c(1, 3, 7, 6, 2)

#provide names
names(x) <- c('a', 'b', 'c', 'd', 'e')

#access value for 'e'
getElement(x, 'e')

[1] 2

Yöntem #3: Vektörü veri çerçevesine dönüştürün ve $operator’ı kullanın

Bir vektördeki öğelere ada göre erişmenin başka bir yolu da, önce vektörü bir veri çerçevesine dönüştürmek, ardından değere erişmek için $ operatörünü kullanmaktır:

 #definevector
x <- c(1, 3, 7, 6, 2)

#provide names
names(x) <- c('a', 'b', 'c', 'd', 'e')

#convert vector to data frame
data_x <- as. data . frame (t(x))

#display data frame
data_x

  a B C D E
1 1 3 7 6 2

#access value for 'e'
data_x$e

[1] 2

Ek kaynaklar

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

R’de nasıl düzeltilir: Adlar önceki adlarla eşleşmiyor
R’de nasıl düzeltilir: Zorlamayla ortaya çıkan NA’lar
R’de nasıl onarılır: sınırların dışına çıkma ipucu
R’de nasıl düzeltilir: kontrastlar yalnızca 2 veya daha fazla seviyeye sahip faktörlere uygulanabilir

Yorum ekle

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