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

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert