logo

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


programėlė



# 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


dvejetainės paieškos algoritmai



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

atidaryti failą su java

>

>

Išvestis: