Kaip pataisyti R: operatorius $ netinkamas atominiams vektoriams

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: