Cum se remediază în R: operatorul $ este nevalid pentru vectorii atomici

Cum se remediază în R: operatorul $ este nevalid pentru vectorii atomici

În acest articol, vom vedea cum să remediați operatorul $ invalid pentru vectorii atomici din programare R limba .

Eroarea cu care se poate confrunta în R este:

$ operator is invalid for atomic vectors 

O astfel de eroare este produsă de compilatorul R atunci când încercăm să obținem un element al unui vector atomic folosind operatorul $. Un vector atomic este pur și simplu un obiect unidimensional care conține date create cu ajutorul funcțiilor c() și vector(). R nu ne permite să accesăm elemente ale unui vector atomic folosind simbolul $. Dar putem folosi paranteze duble, adică [[]] sau funcția getElement() pentru a le accesa.

Când poate apărea această eroare

Să luăm în considerare un exemplu în care avem un vector numeric transporta initializat cu primele cinci numere naturale. Fiecărui numere i se atribuie un nume folosind funcția names() din R. Sintaxa funcției names() este dată mai jos:

Sintaxă: nume(vect) <- valoare

Parametri:

  • vect: un obiect, adică vector, matrice, cadru de date etc.
  • valoare: Numele corespunzătoare care urmează să fie atribuite

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>

Ieșire:

Acum să încercăm să accesăm elementul al treilea element folosind instrucțiunea, 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>

Ieșire:

Compilatorul R produce o eroare deoarece nu avem voie să accesăm elemente dintr-un vector atomic în acest fel. Pentru a verifica dacă vectorul este într-adevăr un vector atomic, putem folosi funcția is.atomic() în R. Sintaxa acestei funcții este dată mai jos:

Sintaxă: este.atomic(vect)

Parametri:

vect: Aici, vect reprezintă un vector

Tip returnare:

  • TRUE: Dacă vect este un vector atomic
  • FALS: Dacă vect nu este un vector atomic

Cum să remediați eroarea

Există trei moduri de utilizare a cărora putem remedia această eroare:

Metoda 1: Accesarea elementelor folosind paranteze duble

Putem accesa cu ușurință elementele unui vector atomic cu ajutorul parantezelor duble pe care acesta, [[]]:

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

Ieșire:

Metodă 2: Accesarea elementelor folosind funcția getElement().

O altă modalitate este să utilizați funcția getElement() pentru a accesa elemente ale vectorului atomic. Funcția are următoarea sintaxă:

Sintaxă: getElement(vect, specificator)

Parametri:

  • vect: Reprezintă un vector
  • specificator: Reprezintă numele elementului pe care dorim să-l accesăm

Tip returnare:

  • Returnează un element marcat cu specificatorul

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

Ieșire:

Metoda 3: Accesarea elementelor prin conversia vectorului în cadru de date și apoi folosind operatorul $

Cealaltă modalitate este de a converti mai întâi vectorul într-un cadru de date și apoi de a aplica operatorul $. Putem converti un vector într-un cadru de date folosind funcția as.data.frame(). Sintaxa acestei funcții este prezentată mai jos:

Sintaxă: ca.date.cadru(obiect)

Parametru:

  • obiectul reprezintă un vector sau o matrice

Tip returnare:

  • Returnează un vector

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>

Ieșire: