Hoe om te gaan met een r-fout: $ operator is niet geldig voor atoomvectoren


Een veel voorkomende fout die u in R kunt tegenkomen is:

 $ operator is invalid for atomic vectors

Deze fout treedt op wanneer u probeert toegang te krijgen tot een element van een atoomvector met behulp van de operator $ .

Een „atoomvector“ is elk eendimensionaal gegevensobject dat is gemaakt met behulp van de functies c() of vector() in R.

Helaas kan de $ niet worden gebruikt om toegang te krijgen tot de elementen van atoomvectoren. In plaats daarvan moet u dubbele haakjes [[]] of de functie getElement() gebruiken.

In deze tutorial worden voorbeelden gegeven van hoe u in de praktijk met deze fout kunt omgaan.

Hoe de foutmelding te reproduceren

Stel dat we de operator $ proberen te gebruiken om toegang te krijgen tot een element van de volgende vector in 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

We ontvangen een foutmelding omdat het niet geldig is om de operator $ te gebruiken om toegang te krijgen tot de elementen van atoomvectoren. We kunnen ook controleren of onze vector inderdaad atomair is:

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

[1] TRUE

Methode #1: Toegang tot elementen met dubbele haakjes

Eén manier om toegang te krijgen tot elementen op naam in een vector is door de [[]]- notatie te gebruiken:

 #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: toegang krijgen tot elementen met getElement()

Een andere manier om toegang te krijgen tot elementen op naam in een vector is door de notatie getElement() te gebruiken:

 #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 #3: Converteer vector naar dataframe en gebruik $operator

Een andere manier om toegang te krijgen tot elementen op naam in een vector is door eerst de vector naar een dataframe te converteren en vervolgens de operator $ te gebruiken om toegang te krijgen tot de waarde:

 #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

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende fouten in R kunt oplossen:

Oplossing in R: namen komen niet overeen met eerdere namen
Hoe op te lossen in R: NA’s geïntroduceerd door dwang
Hoe te repareren in R: hint buiten de grenzen
Hoe op te lossen in R: contrasten kunnen alleen worden toegepast op factoren met 2 of meer niveaus

Einen Kommentar hinzufügen

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