El operador $ no es válido para el error de vectores atómicos en R
-
el
operador $ no es válido para vectores atómicos
Error en R -
los operadores
[]
y[[]]
en R -
Utilice la función
getElement()
-
Convierta un vector en un marco de datos y use el operador
$
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.
[]
y[[]]
pueden usar índices de posición o nombres.[]
puede extraer varios elementos, mientras que[[]]
solo puede extraer un elemento.[[]]
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
.
- Solo se puede seleccionar un elemento usando el nombre o el índice.
- 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"