El operador $ no es válido para el error de vectores atómicos en R

Jesse John 21 junio 2023
  1. el operador $ no es válido para vectores atómicos Error en R
  2. los operadores [] y [[]] en R
  3. Utilice la función getElement()
  4. Convierta un vector en un marco de datos y use el operador $
El operador $ no es válido para el error de vectores atómicos en R

R proporciona varias formas en las que podemos extraer elementos de un vector. Este artículo describirá las instalaciones de la base R para este propósito.

Un punto importante a tener en cuenta es que uno de los operadores de extracción de R, $, no funciona para vectores. Comenzaremos con esto y luego veremos las diferentes opciones disponibles.

el operador $ no es válido para vectores atómicos Error en R

El operador $ se puede usar para extraer columnas con nombre de un marco de datos o elementos con nombre de listas, pero no funciona en vectores. R genera un error.

El operador $ necesita un nombre, no un índice numérico. Entonces crearemos un vector en el que se nombran los elementos.

Código de ejemplo:

# Create a vector using c(). Assign names for its elements.
vr1 = c(a = "alpha", d = "delta", r = "rho", s = "sigma")
vr1

# Try to extract the second element.
vr1$d

Producción :

> vr1$d
Error in vr1$d : $ operator is invalid for atomic vectors

R nos dice que el operador $ no es válido para vectores atómicos.

Un vector de números o cadenas se llama atómico porque todos los elementos son del mismo tipo y no puede tener otro vector como elemento.

Para vectores atómicos como el de nuestro ejemplo, necesitamos usar las otras funciones de R para extraer elementos.

los operadores [] y [[]] en R

Podemos usar los operadores [] y [[]] para extraer elementos de vectores.

  1. [] y [[]] pueden usar índices de posición o nombres.
  2. [] puede extraer varios elementos, mientras que [[]] solo puede extraer un elemento.
  3. [[]] elimina el nombre, mientras que [] conserva el nombre al extraer un elemento.

Código de ejemplo:

# Use [] with index number or name to extract a single element.
vr1[2]
vr1['d']

# Use [[]] with the index number of the name to extract a single element.
vr1[[2]]
vr1[['d']]

# Use [] to extract multiple elements. Use indices or names.
vr1[c(2,4)]
vr1[c('d', 's')]

Producción :

> # Use [] with index number or name to extract a single element.
> vr1[2]
      d
"delta"
> vr1['d']
      d
"delta"

> # Use [[]] with index number of name to extract a single element.
> vr1[[2]]
[1] "delta"
> vr1[['d']]
[1] "delta"

> # Use [] to extract multiple elements. Use indices or names.
> vr1[c(2,4)]
      d       s
"delta" "sigma"
> vr1[c('d', 's')]
      d       s
"delta" "sigma"

Utilice la función getElement()

Además de los operadores de extracción, R también proporciona la función getElement() para extraer elementos de vectores.

El getElement() es similar al operador [[]] con la opción exact = TRUE.

  1. Solo se puede seleccionar un elemento usando el nombre o el índice.
  2. El nombre se elimina.

Código de ejemplo:

getElement(vr1, 'd')
getElement(vr1, 2)

Producción :

> getElement(vr1, 'd')
[1] "delta"
> getElement(vr1, 2)
[1] "delta"

Convierta un vector en un marco de datos y use el operador $

Si queremos usar el operador $ para extraer un elemento de un vector, primero debemos convertir el vector en un marco de datos.

Código de ejemplo:

dfr1 = as.data.frame(vr1)
dfr1

Producción :

> dfr1 = as.data.frame(vr1)
> dfr1
    vr1
a alpha
d delta
r   rho
s sigma

Tenemos un marco de datos con una columna y cuatro filas. El nombre del vector se ha convertido en el nombre de la columna; los nombres de los elementos se han convertido en nombres de fila.

Necesitamos especificar los nombres de fila y columna deseados para extraer un elemento del vector original. También podemos especificar el nombre de la fila para todas las columnas.

Código de ejemplo:

# Use names for row and column.
dfr1['d','vr1']

# Only name the row, and select all columns.
dfr1['d',]

Producción :

> # Use names for row and column.
> dfr1['d','vr1']
[1] "delta"
> # Only name the row and select all columns.
> dfr1['d',]
[1] "delta"
Autor: Jesse John
Jesse John avatar Jesse John avatar

Jesse is passionate about data analysis and visualization. He uses the R statistical programming language for all aspects of his work.

Artículo relacionado - R Error