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

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *