Jak radzić sobie z błędem r: operator $ nie jest prawidłowy dla wektorów atomowych


Typowym błędem, jaki możesz napotkać w R jest:

 $ operator is invalid for atomic vectors

Ten błąd występuje, gdy próbujesz uzyskać dostęp do elementu wektora atomowego za pomocą operatora $ .

„Wektor atomowy” to dowolny jednowymiarowy obiekt danych utworzony przy użyciu funkcji c() lub Vector() w języku R.

Niestety, $ nie może być użyte do uzyskania dostępu do elementów wektorów atomowych. Zamiast tego powinieneś użyć podwójnych nawiasów [[]] lub funkcji getElement() .

W tym samouczku przedstawiono przykłady obsługi tego błędu w praktyce.

Jak odtworzyć komunikat o błędzie

Załóżmy, że próbujemy użyć operatora $ , aby uzyskać dostęp do elementu następującego wektora w R:

 #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

Otrzymujemy błąd, ponieważ użycie operatora $ w celu uzyskania dostępu do elementów wektorów atomowych jest nieprawidłowe. Możemy również sprawdzić, czy nasz wektor jest rzeczywiście atomowy:

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

[1] TRUE

Metoda nr 1: Uzyskaj dostęp do elementów za pomocą podwójnych nawiasów

Jednym ze sposobów dostępu do elementów wektora według nazwy jest użycie notacji [[]] :

 #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

Metoda nr 2: Uzyskaj dostęp do elementów za pomocą getElement()

Innym sposobem uzyskania dostępu do elementów wektora według nazwy jest użycie notacji getElement() :

 #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

Metoda nr 3: Konwertuj wektor na ramkę danych i użyj operatora $

Innym sposobem uzyskania dostępu do elementów wektora według nazwy jest najpierw przekonwertowanie wektora na ramkę danych, a następnie użycie operatora $ w celu uzyskania dostępu do wartości:

 #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

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak rozwiązać inne typowe błędy w języku R:

Jak naprawić w R: Nazwy nie pasują do poprzednich nazw
Jak naprawić w R: NA wprowadzone przez przymus
Jak naprawić w R: wskazówka poza zakresem
Jak naprawić w R: kontrasty można zastosować tylko do czynników o 2 lub więcej poziomach

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *