Kuinka korjata R: $-operaattori ei kelpaa atomivektoreille

Kuinka korjata R: $-operaattori ei kelpaa atomivektoreille

Tässä artikkelissa aiomme nähdä kuinka korjata $-operaattori on virheellinen atomivektoreille R ohjelmointi Kieli .

Virhe, jonka voi kohdata R:ssä, on:

$ operator is invalid for atomic vectors 

Tällaisen virheen tuottaa R-kääntäjä, kun yritämme saada atomivektorin alkiota käyttämällä $-operaattoria. Atomivektori on yksinkertaisesti yksiulotteinen objekti, joka sisältää c()- ja vector()-funktioiden avulla luotua dataa. R ei salli meidän käyttää atomivektorin elementtejä käyttämällä $-symbolia. Mutta voimme käyttää niitä kaksoissulkeilla eli [[]] tai getElement()-funktiolla.

Milloin tämä virhe saattaa ilmetä

Tarkastellaan esimerkkiä, jossa meillä on numeerinen vektori kantaa alustetaan viidellä ensimmäisellä luonnollisella luvulla. Jokaiselle numerolle on annettu nimi käyttämällä R:n names()-funktiota. Names()-funktion syntaksi on annettu alla:

Syntaksi: nimet(vect) <- arvo

Parametrit:

  • vektori: Objekti eli vektori, matriisi, tietokehys jne.
  • arvo: vastaavat annettavat nimet

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>

Lähtö:

Yritetään nyt päästä elementtiin kolmas elementti käskyn avulla, 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>

Lähtö:

R-kääntäjä tuottaa virheen, koska emme pääse käsiksi atomivektorin elementteihin tällä tavalla. Tarkistaaksemme, onko vektori todella atomivektori, voimme käyttää is.atomic()-funktiota R:ssä. Tämän funktion syntaksi on annettu alla:

Syntaksi: is.atomic(vect)

Parametrit:

vect: Tässä vektori edustaa vektoria

Palautustyyppi:

  • TOSI: Jos vektori on atomivektori
  • EPÄTOSI: Jos vektori ei ole atomivektori

Kuinka korjata virhe

On kolme tapaa käyttää sitä voimme korjata tämän virheen:

Tapa 1: Pääsy elementteihin kaksoissulkeilla

Voimme käyttää atomivektorin elementtejä helposti kaksoissulkeiden avulla, jotka [[]]:

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'> ]]>

Lähtö:

Menetelmä 2: Elementtien käyttö getElement()-funktiolla

Toinen tapa on käyttää getElement()-funktiota päästäksesi käsiksi atomivektorin elementteihin. Funktiolla on seuraava syntaksi:

Syntaksi: getElement(vektori, määrittäjä)

Parametrit:

  • vect: Se edustaa vektoria
  • specifier: Se edustaa sen elementin nimeä, jota haluamme käyttää

Palautustyyppi:

  • Palauttaa määrittimellä merkityn elementin

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'> )>

Lähtö:

Tapa 3: Pääsy elementteihin muuntamalla vektori datakehykseksi ja käyttämällä sitten $-operaattoria

Toinen tapa on muuntaa vektori ensin datakehykseksi ja sitten käyttää $-operaattoria. Voimme muuntaa vektorin tietokehykseksi käyttämällä as.data.frame()-funktiota. Tämän funktion syntaksi on annettu alla:

Syntaksi: as.data.frame(objekti)

Parametri:

  • objekti edustaa vektoria tai matriisia

Palautustyyppi:

  • Palauttaa vektorin

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>

Lähtö: