Kaip pataisyti R: operatorius $ netinkamas atominiams vektoriams
Šiame straipsnyje pamatysime, kaip ištaisyti, kad $ operatorius negalioja atominiams vektoriams R programavimas kalba .
Klaida, su kuria gali susidurti R, yra:
$ operator is invalid for atomic vectors
Tokią klaidą sukuria R kompiliatorius, kai bandome gauti atominio vektoriaus elementą naudodami operatorių $. Atominis vektorius yra tiesiog 1 dimensijos objektas, kuriame yra duomenų, sukurtų naudojant c() ir vector() funkcijas. R neleidžia mums pasiekti atominio vektoriaus elementų naudojant simbolį $. Tačiau norėdami juos pasiekti galime naudoti dvigubus skliaustus, ty [[]] arba funkciją getElement().
Kai gali atsirasti ši klaida
Panagrinėkime pavyzdį, kuriame turime skaitinį vektorių nešti inicijuojami pirmaisiais penkiais natūraliaisiais skaičiais. Kiekvienas skaičius priskiriamas pavadinimui, naudojant R funkciją names(). Funkcijos names() sintaksė pateikta toliau:
Sintaksė: vardai(vec) <- reikšmė
Parametrai:
- vektorius: objektas, ty vektorius, matrica, duomenų rėmelis ir kt.
- reikšmė: atitinkami pavadinimai, kuriuos reikia priskirti
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> |
Išvestis:
Dabar pabandykime pasiekti trečiąjį elementą naudodami teiginį, 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> |
Išvestis:
R kompiliatorius sukuria klaidą, nes tokiu būdu mums neleidžiama pasiekti atominio vektoriaus elementų. Norėdami patikrinti, ar vektorius tikrai yra atominis vektorius, R galite naudoti funkciją is.atomic(). Šios funkcijos sintaksė pateikta žemiau:
Sintaksė: is.atomic(vec)
Parametrai:
vektoras: čia vektorius reiškia vektorių
Grąžinimo tipas:
- TEISINGA: jei vektorius yra atominis vektorius
- NETEISINGA: jei vektorius nėra atominis vektorius
Kaip ištaisyti klaidą
Yra trys naudojimo būdai galime ištaisyti šią klaidą:
1 būdas: prieiga prie elementų naudojant dvigubus skliaustus
Mes galime lengvai pasiekti atominio vektoriaus elementus naudodami dvigubus skliaustus, kad [[]]:
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'> ]]> |
Išvestis:
Metodas 2: prieiga prie elementų naudojant getElement() funkciją
Kitas būdas yra naudoti funkciją getElement() norint pasiekti atominio vektoriaus elementus. Funkcija turi tokią sintaksę:
Sintaksė: getElement (vektas, specifikatorius)
Parametrai:
- vektorius: reiškia vektorių
- specifier: Tai reiškia elemento, kurį norime pasiekti, pavadinimą
Grąžinimo tipas:
- Grąžina elementą, pažymėtą specifikatoriumi
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'> )> |
Išvestis:
3 būdas: prieiga prie elementų konvertuojant vektorių į duomenų rėmelį ir naudojant operatorių $
Kitas būdas yra pirmiausia konvertuoti vektorių į duomenų rėmelį ir tada taikyti operatorių $. Mes galime konvertuoti vektorių į duomenų rėmelį naudodami funkciją as.data.frame(). Šios funkcijos sintaksė pateikta žemiau:
Sintaksė: as.data.frame(objektas)
Parametras:
- objektas reiškia vektorių arba matricą
Grąžinimo tipas:
- Grąžina vektorių
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> |
Išvestis: