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: