En este artículo, veremos cómo arreglar que el operador $ no sea válido para vectores atómicos en el programación R idioma .
El error que uno puede enfrentar en R es:
$ operator is invalid for atomic vectors>
El compilador de R produce este tipo de error cuando intentamos obtener un elemento de un vector atómico utilizando el operador $. Un vector atómico es simplemente un objeto unidimensional que contiene datos creados con la ayuda de las funciones c() y vector(). R no nos permite acceder a elementos de un vector atómico usando el símbolo $. Pero podemos usar corchetes dobles, es decir, [[]] o la función getElement() para acceder a ellos.
Cuando podría ocurrir este error
Consideremos un ejemplo en el que tenemos un vector numérico llevar inicializado con los primeros cinco números naturales. A cada uno de los números se le asigna un nombre utilizando la función nombres() en R. La sintaxis de la función nombres() se proporciona a continuación:
Sintaxis: nombres (vect) <- valor
Parámetros:
- vect: un objeto, es decir, vector, matriz, marco de datos, etc.
- valor: Los nombres correspondientes que se asignarán
R
clase abstracta java
# 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> |
>
>
Producción:
Ahora intentemos acceder al tercer elemento usando la declaración, vect$tercero:
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> |
>
>
Producción:
El compilador de R produce un error porque no se nos permite acceder a elementos en un vector atómico de esta manera. Para comprobar si el vector es realmente un vector atómico, podemos usar la función is.atomic() en R. La sintaxis de esta función se proporciona a continuación:
Sintaxis: es.atómico(vect)
Parámetros:
vect: aquí, vect representa un vector
Tipo de devolución:
- VERDADERO: Si vect es un vector atómico
- FALSO: Si vect no es un vector atómico
Cómo arreglar el error
Hay tres formas de utilizarlas. podemos arreglar este error:
Método 1: acceder a elementos mediante corchetes dobles
Podemos acceder fácilmente a los elementos de un vector atómico con la ayuda de corchetes dobles, [[]]:
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'>]]> |
>
>
Producción:
Método 2: Acceder a elementos usando la función getElement()
Otra forma es utilizar la función getElement() para acceder a elementos del vector atómico. La función tiene la siguiente sintaxis:
Sintaxis: getElement(vect, especificador)
Parámetros:
- vect: Representa un vector
- especificador: Representa el nombre del elemento al que queremos acceder
Tipo de devolución:
- Devuelve un elemento marcado con 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'>)> |
>
>
Producción:
Método 3: acceder a elementos convirtiendo el vector en un marco de datos y luego usando el operador $
La otra forma es convertir el vector en un marco de datos primero y luego aplicar el operador $. Podemos convertir un vector en un marco de datos usando la función as.data.frame(). La sintaxis de esta función se proporciona a continuación:
Sintaxis: como.marco.de.datos(objeto)
Parámetro:
- El objeto representa un vector o una matriz.
Tipo de devolución:
- Devuelve 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> |
>
>
Producción: