Ako opraviť v R: Operátor $ je neplatný pre atómové vektory
V tomto článku uvidíme, ako opraviť operátor $ neplatný pre atómové vektory v R programovanie Jazyk .
Chyba, s ktorou sa človek môže stretnúť v R je:
$ operator is invalid for atomic vectors
Takúto chybu vytvára kompilátor R, keď sa pokúšame získať prvok atómového vektora pomocou operátora $. Atómový vektor je jednoducho 1-rozmerný objekt obsahujúci dáta vytvorené pomocou funkcií c() a vector(). R nám neumožňuje prístup k prvkom atómového vektora pomocou symbolu $. Na prístup k nim však môžeme použiť dvojité zátvorky, tj [[]] alebo funkciu getElement().
Kedy môže nastať táto chyba
Zoberme si príklad, v ktorom máme číselný vektor niesť inicializované prvými piatimi prirodzenými číslami. Každému z čísel je priradený názov pomocou funkcie names() v R. Syntax funkcie names() je uvedená nižšie:
Syntax: name(vect) <- hodnota
Parametre:
- vect: objekt, t. j. vektor, matica, dátový rámec atď.
- hodnota: Zodpovedajúce názvy, ktoré sa majú priradiť
R
# Define a vector> vect <-> c> (1, 2, 3, 4, 5)> > # Set integers names> names> (vect) <-> c> (> 'first'> ,> 'second'> ,> 'third'> ,> > 'fourth'> ,> 'fifth'> )> > # Display the vector> vect> |
Výkon:
Teraz sa pokúsime získať prístup k tretiemu prvku pomocou príkazu, vect$third:
R
# Define a vector> vect <-> c> (1, 2, 3, 4, 5)> > # Set integers names> names> (vect) <-> c> (> 'first'> ,> 'second'> ,> 'third'> ,> > 'fourth'> ,> 'fifth'> )> > # Display the vector> vect$third> |
Výkon:
Kompilátor R vytvára chybu, pretože týmto spôsobom nemôžeme pristupovať k prvkom v atómovom vektore. Na kontrolu, či je vektor skutočne atómovým vektorom, môžeme použiť funkciu is.atomic() v R. Syntax tejto funkcie je uvedená nižšie:
Syntax: is.atomic(vect)
Parametre:
vect: Vect tu predstavuje vektor
Typ návratu:
- TRUE: Ak vect je atómový vektor
- FALSE: Ak vect nie je atómový vektor
Ako opraviť chybu
Existujú tri spôsoby použitia môžeme opraviť túto chybu:
Metóda 1: Prístup k prvkom pomocou dvojitých zátvoriek
K prvkom atómového vektora môžeme ľahko pristupovať pomocou dvojitých zátvoriek, že [[]]:
R
# Define a vector> vect <-> c> (1, 2, 3, 4, 5)> > # Set integers names> names> (vect) <-> c> (> 'first'> ,> 'second'> ,> 'third'> ,> > 'fourth'> ,> 'fifth'> )> > # Display the third element of the> # vector> vect[[> 'third'> ]]> |
Výkon:
Metóda 2: Prístup k prvkom pomocou funkcie getElement().
Ďalším spôsobom je použitie funkcie getElement() na prístup k prvkom atómového vektora. Funkcia má nasledujúcu syntax:
Syntax: getElement(vect, špecifikátor)
Parametre:
- vect: Predstavuje vektor
- špecifikátor: Predstavuje názov prvku, ku ktorému chceme pristupovať
Typ návratu:
- Vráti prvok označený špecifikátorom
R
# Define a vector> vect <-> c> (1, 2, 3, 4, 5)> > # Set integers names> names> (vect) <-> c> (> 'first'> ,> 'second'> ,> 'third'> ,> > 'fourth'> ,> 'fifth'> )> > # Display the third element of> # the vector> getElement> (vect,> 'third'> )> |
Výkon:
Metóda 3: Prístup k prvkom prevodom vektora na dátový rámec a potom použitím operátora $
Druhým spôsobom je najprv previesť vektor na dátový rámec a potom použiť operátor $. Pomocou funkcie as.data.frame() môžeme previesť vektor na dátový rámec. Syntax tejto funkcie je uvedená nižšie:
Syntax: as.data.frame(object)
Parameter:
- objekt predstavuje vektor alebo maticu
Typ návratu:
- Vráti vektor
R
# Define a vector> vect <-> c> (1, 2, 3, 4, 5)> > # Set integers names> names> (vect) <-> c> (> 'first'> ,> 'second'> ,> 'third'> ,> > 'fourth'> ,> 'fifth'> )> > # Transform the vector to data frame> dataframe <-> as.data.frame> (> t> (vect))> > # Access the third element> dataframe$third> |
Výkon: