- Como reproduzir a mensagem de erro
- Método #1: Aceder a elementos utilizando parênteses duplos
- Método #2: Aceder a elementos utilizando getElement()
- Método #3 Converter Vetor em Quadro de Dados & Utilizar o operador $
Um erro comum que pode encontrar no R é:
O operador $ não é válido para vectores atómicos
Este erro ocorre quando se tenta aceder a um elemento de um vetor atómico utilizando a função $ operador.
Um "vetor atómico" é qualquer objeto de dados unidimensional criado utilizando a função c() ou vetorial() funções em R.
Infelizmente, o $ não pode ser utilizado para aceder a elementos em vectores atómicos. Em vez disso, é necessário utilizar parênteses duplos [[]] ou o getElement() função.
Este tutorial partilha exemplos de como lidar com este erro na prática.
Como reproduzir a mensagem de erro
Suponhamos que estamos a tentar utilizar o $ para aceder a um elemento do seguinte vetor em R:
#definir vetor x <- c(1, 3, 7, 6, 2) #fornecer nomes names(x) <- c('a', 'b', 'c', 'd', 'e') #exibir vetor x a b c d e 1 3 7 6 2 #tentar aceder ao valor em 'e' x$e Erro em x$e : o operador $ é inválido para vectores atómicos
Recebemos um erro porque não é válido utilizar o $ para aceder a elementos em vectores atómicos. Podemos também verificar que o nosso vetor é de facto atómico:
#verificar se o vetor é atómico é. atómico (x) VERDADEIRO
Método #1: Aceder a elementos utilizando parênteses duplos
Uma forma de aceder a elementos por nome num vetor é utilizar a função [[]] notação:
#definir vetor x <- c(1, 3, 7, 6, 2) #fornecer nomes names(x) <- c('a', 'b', 'c', 'd', 'e') #aceder valor para 'e' x[['e']] 2
Método #2: Aceder a elementos utilizando getElement()
Outra forma de aceder a elementos por nome num vetor é utilizar a função getElement() notação:
#define vetor x <- c(1, 3, 7, 6, 2) #provide names names(x) <- c('a', 'b', 'c', 'd', 'e') #access value for 'e' getElement(x, 'e') 2
Método #3 Converter Vetor em Quadro de Dados & Utilizar o operador $
Outra forma de aceder a elementos por nome num vetor é primeiro converter o vetor num quadro de dados e depois utilizar a função $ para aceder ao valor:
#define vetor x <- c(1, 3, 7, 6, 2) #provide names names(x) <- c('a', 'b', 'c', 'd', 'e') #convert vetor 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 2