En aquest article, veurem com arreglar l'operador $ no és vàlid per als vectors atòmics del Programació R llenguatge .
L'error que es pot trobar a R és:
$ operator is invalid for atomic vectors>
Aquest error el produeix el compilador R quan intentem obtenir un element d'un vector atòmic mitjançant l'operador $. Un vector atòmic és simplement un objecte unidimensional que conté dades creades amb l'ajuda de les funcions c() i vector(). R no ens permet accedir a elements d'un vector atòmic mitjançant el símbol $. Però podem utilitzar claudàtors dobles, és a dir, [[]] o la funció getElement() per accedir-hi.
Quan es pot produir aquest error
Considerem un exemple en què tenim un vector numèric portar inicialitzat amb els cinc primers nombres naturals. Cadascun dels números s'assigna amb un nom mitjançant la funció names() a R. La sintaxi de la funció names() es mostra a continuació:
Sintaxi: noms (vect) <- valor
Paràmetres:
- vect: un objecte, és a dir, un vector, una matriu, un marc de dades, etc.
- valor: els noms corresponents a assignar
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> |
>
>
Sortida:
Ara intentem accedir al tercer element mitjançant la instrucció, vect$tercer:
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> |
>
>
Sortida:
El compilador R produeix un error perquè no se'ns permet accedir als elements d'un vector atòmic d'aquesta manera. Per comprovar si el vector és realment un vector atòmic, podem utilitzar la funció is.atomic() a R. La sintaxi d'aquesta funció es mostra a continuació:
Sintaxi: is.atomic (vect)
Paràmetres:
vect: Aquí, vect representa un vector
Tipus de retorn:
- VERTADER: si vect és un vector atòmic
- FALS: si vect no és un vector atòmic
Com solucionar l'error
Hi ha tres maneres d'utilitzar-los podem solucionar aquest error:
Mètode 1: Accés als elements mitjançant claudàtors dobles
Podem accedir fàcilment als elements d'un vector atòmic amb l'ajuda de dobles claudàtors que ell, [[]]:
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'>]]> |
>
>
Sortida:
Mètode 2: Accés als elements mitjançant la funció getElement().
Una altra manera és utilitzar la funció getElement() per accedir als elements del vector atòmic. La funció té la sintaxi següent:
Sintaxi: getElement(vect, especificador)
Paràmetres:
- vect: representa un vector
- especificador: representa el nom de l'element al qual volem accedir
Tipus de retorn:
- Retorna un element marcat amb l'especificador
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'>)> |
>
>
Sortida:
Mètode 3: accedir als elements convertint el vector en marc de dades i després utilitzant l'operador $
L'altra manera és convertir primer el vector en un marc de dades i després aplicar l'operador $. Podem convertir un vector en un marc de dades mitjançant la funció as.data.frame(). La sintaxi d'aquesta funció és la següent:
Sintaxi: as.data.frame(objecte)
Paràmetre:
- objecte representa un vector o matriu
Tipus de retorn:
- Retorna un vector
R
verificació nul de java
# 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> |
>
>
Sortida: