Como lidar com o erro r: o operador $ não é válido para vetores atômicos
Um erro comum que você pode encontrar em R é:
$ operator is invalid for atomic vectors
Este erro ocorre quando você tenta acessar um elemento de um vetor atômico usando o operador $ .
Um “vetor atômico” é qualquer objeto de dados unidimensional criado usando as funções c() ou vector() em R.
Infelizmente, o $ não pode ser usado para acessar os elementos dos vetores atômicos. Em vez disso, você deve usar colchetes duplos [[]] ou a função getElement() .
Este tutorial compartilha exemplos de como lidar com esse erro na prática.
Como reproduzir a mensagem de erro
Suponha que estamos tentando usar o operador $ para acessar um elemento do seguinte vetor em R:
#definevector
x <- c(1, 3, 7, 6, 2)
#provide names
names(x) <- c('a', 'b', 'c', 'd', 'e')
#display vector
x
a B C D E
1 3 7 6 2
#attempt to access value in 'e'
x$e
Error in x$e: $ operator is invalid for atomic vectors
Estamos recebendo um erro porque não é válido utilizar o operador $ para acessar os elementos dos vetores atômicos. Também podemos verificar se nosso vetor é de fato atômico:
#check if vector is atomic
is. atomic (x)
[1] TRUE
Método nº 1: acessar elementos usando colchetes duplos
Uma maneira de acessar elementos por nome em um vetor é usar a notação [[]] :
#definevector
x <- c(1, 3, 7, 6, 2)
#provide names
names(x) <- c('a', 'b', 'c', 'd', 'e')
#access value for 'e'
x[['e']]
[1] 2
Método nº 2: acessar elementos usando getElement()
Outra forma de acessar elementos por nome em um vetor é usar a notação getElement() :
#definevector
x <- c(1, 3, 7, 6, 2)
#provide names
names(x) <- c('a', 'b', 'c', 'd', 'e')
#access value for 'e'
getElement(x, 'e')
[1] 2
Método nº 3: converter vetor em quadro de dados e usar $operator
Outra maneira de acessar elementos por nome em um vetor é primeiro converter o vetor em um quadro de dados e, em seguida, usar o operador $ para acessar o valor:
#definevector x <- c(1, 3, 7, 6, 2) #provide names names(x) <- c('a', 'b', 'c', 'd', 'e') #convert vector to data frame data_x <- as. data . frame (t(x)) #display data frame data_x a B C D E 1 1 3 7 6 2 #access value for 'e' data_x$e [1] 2
Recursos adicionais
Os tutoriais a seguir explicam como resolver outros erros comuns em R:
Como corrigir em R: os nomes não correspondem aos nomes anteriores
Como corrigir em R: NAs introduzidos por coerção
Como reparar em R: dica fora dos limites
Como corrigir em R: contrastes só podem ser aplicados a fatores com 2 ou mais níveis