So behandeln sie den r-fehler: der operator $ ist für atomare vektoren nicht gültig
Ein häufiger Fehler, der in R auftreten kann, ist:
$ operator is invalid for atomic vectors
Dieser Fehler tritt auf, wenn Sie versuchen, mit dem $ -Operator auf ein Element eines atomaren Vektors zuzugreifen.
Ein „atomarer Vektor“ ist ein beliebiges eindimensionales Datenobjekt, das mit den Funktionen c() oder vector() in R erstellt wurde.
Leider kann das $ nicht verwendet werden, um auf die Elemente atomarer Vektoren zuzugreifen. Stattdessen sollten Sie doppelte Klammern [[]] oder die Funktion getElement() verwenden.
In diesem Tutorial finden Sie Beispiele für den praktischen Umgang mit diesem Fehler.
So reproduzieren Sie die Fehlermeldung
Angenommen, wir versuchen, mit dem $ -Operator auf ein Element des folgenden Vektors in R zuzugreifen:
#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
Wir erhalten eine Fehlermeldung, da die Verwendung des $ -Operators für den Zugriff auf die Elemente atomarer Vektoren ungültig ist. Wir können auch überprüfen, ob unser Vektor tatsächlich atomar ist:
#check if vector is atomic
is. atomic (x)
[1] TRUE
Methode Nr. 1: Greifen Sie mit doppelten Klammern auf Elemente zu
Eine Möglichkeit, auf Elemente in einem Vektor namentlich zuzugreifen, ist die Verwendung der [[]]- Notation:
#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
Methode #2: Mit getElement() auf Elemente zugreifen
Eine andere Möglichkeit, auf Elemente in einem Vektor namentlich zuzugreifen, ist die Verwendung der getElement() -Notation:
#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
Methode Nr. 3: Konvertieren Sie den Vektor in einen Datenrahmen und verwenden Sie $operator
Eine andere Möglichkeit, auf Elemente in einem Vektor nach Namen zuzugreifen, besteht darin, den Vektor zunächst in einen Datenrahmen umzuwandeln und dann mit dem Operator $ auf den Wert zuzugreifen:
#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
Zusätzliche Ressourcen
Die folgenden Tutorials erklären, wie Sie andere häufige Fehler in R beheben können:
So beheben Sie das Problem in R: Namen stimmen nicht mit vorherigen Namen überein
So beheben Sie in R: NAs, die durch Zwang eingeführt wurden
So reparieren Sie in R: Hinweis außerhalb der Grenzen
So korrigieren Sie in R: Kontraste können nur auf Faktoren mit 2 oder mehr Ebenen angewendet werden