logo

Kako popraviti v R: operator $ ni veljaven za atomske vektorje

V tem članku si bomo ogledali, kako popraviti, da je operator $ neveljaven za atomske vektorje v R programiranje jezik .

Napaka, s katero se lahko srečate v R, je:



$ operator is invalid for atomic vectors>

Takšno napako povzroči prevajalnik R, ko poskušamo pridobiti element atomskega vektorja z uporabo operatorja $. Atomski vektor je preprosto 1-dimenzionalni objekt, ki vsebuje podatke, ustvarjene s pomočjo funkcij c() in vector(). R nam ne dovoljuje dostopa do elementov atomskega vektorja s simbolom $. Vendar lahko za dostop do njih uporabimo dvojne oklepaje, npr. [[]] ali funkcijo getElement().

Kdaj se lahko pojavi ta napaka

Oglejmo si primer, v katerem imamo numerični vektor nositi inicializirano s prvimi petimi naravnimi števili. Vsaki številki je dodeljeno ime s funkcijo names() v R. Sintaksa funkcije names() je podana spodaj:

Sintaksa: imena(vect) <- vrednost



Parametri:

  • vect: objekt, tj. vektor, matrika, podatkovni okvir itd.
  • vrednost: ustrezna imena, ki jih je treba dodeliti

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>

>

>

Izhod:

Zdaj pa poskusimo dostopati do elementa tretji element z uporabo izjave, vect$tretji:

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>

>

>

Izhod:

Prevajalnik R povzroči napako, ker na ta način ne smemo dostopati do elementov v atomskem vektorju. Če želite preveriti, ali je vektor res atomski vektor, lahko uporabimo funkcijo is.atomic() v R. Sintaksa te funkcije je podana spodaj:

Sintaksa: is.atomic(vect)

Parametri:

vect: Tukaj vect predstavlja vektor

Vrsta vračila:

  • DRŽI: Če je vect atomski vektor
  • FALSE: Če vect ni atomski vektor

Kako odpraviti napako

Obstajajo trije načini uporabe lahko popravimo to napako:

1. način: dostop do elementov z uporabo dvojnih oklepajev

Do elementov atomskega vektorja lahko enostavno dostopamo s pomočjo dvojnih oklepajev, [[]]:

R


bool v niz java



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

>

>

Izhod:

Metoda 2: Dostop do elementov s funkcijo getElement().

Drug način je uporaba funkcije getElement() za dostop do elementov atomskega vektorja. Funkcija ima naslednjo sintakso:

Sintaksa: getElement(vect, specifier)

Parametri:

  • vect: Predstavlja vektor
  • specifikator: Predstavlja ime elementa, do katerega želimo dostopati

Vrsta vračila:

  • Vrne element, označen z specifikatorjem

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

>

>

Izhod:

3. način: dostop do elementov s pretvorbo vektorja v podatkovni okvir in nato z uporabo operatorja $

Drugi način je, da vektor najprej pretvorite v podatkovni okvir in nato uporabite operator $. Vektor lahko pretvorimo v podatkovni okvir s funkcijo as.data.frame(). Sintaksa te funkcije je podana spodaj:

Sintaksa: as.data.frame(objekt)

Parameter:

  • objekt predstavlja vektor ali matriko

Vrsta vračila:

  • Vrne 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>

>

>

Izhod: