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: