Eu finalmente consegui descobrir o código para minha raspagem . Parecia estar funcionando bem e, de repente, quando o executei novamente, recebi a seguinte mensagem de erro:
Error in url[i] = paste("http://en.wikipedia.org/wiki/", gsub(" ", "_", :
object of type 'closure' is not subsettable
Não tenho certeza do motivo, pois não mudei nada em meu código.
Por favor informar.
library(XML)
library(plyr)
names <- c("George Clooney", "Kevin Costner", "George Bush", "Amar Shanghavi")
for(i in 1:length(names)) {
url[i] = paste('http://en.wikipedia.org/wiki/', gsub(" ","_", names[i]) , sep="")
# some parsing code
}
[]
vez de()
!Respostas:
Em geral, essa mensagem de erro significa que você tentou usar a indexação em uma função. Você pode reproduzir esta mensagem de erro com, por exemplo
O fechamento mencionado na mensagem de erro é (vagamente) a função e o ambiente que armazena as variáveis quando a função é chamada.
Neste caso específico, como Joshua mencionou, você está tentando acessar a
url
função como uma variável. Se você definir uma variável chamadaurl
, o erro desaparece.Por uma questão de boa prática, você geralmente deve evitar nomear variáveis após funções de base R. (Chamar variáveis
data
é uma fonte comum desse erro.)Existem vários erros relacionados ao tentar subdividir operadores ou palavras-chave.
Se você estiver tendo esse problema em
shiny
, a causa mais provável é que você está tentando trabalhar com umareactive
expressão sem chamá-la como uma função usando parênteses.Embora muitas vezes trabalhemos com expressões reativas brilhantes como se fossem quadros de dados, na verdade são funções que retornam quadros de dados (ou outros objetos).
Mas, se tentarmos subconjuí-la sem parênteses, estaremos, na verdade, tentando indexar uma função e obteremos um erro:
fonte
Você não define o vetor
url
,, antes de tentar subconjuí-lo.url
também é uma função no pacote básico, portanto,url[i]
tentar criar um subconjunto dessa função ... o que não faz sentido.Você provavelmente definiu
url
em sua sessão R anterior, mas se esqueceu de copiar esse código para o seu script.fonte
No caso deste erro semelhante Aviso: Erro em $: objeto do tipo 'encerramento' não é subsettable [No stack trace available]
Basta adicionar o nome do pacote correspondente usando :: eg
em vez de tags (....)
escrever :: tags brilhantes (....)
fonte
Eu tive este problema ao tentar remover um elemento de interface do usuário dentro de um evento reativo:
Eu estava recebendo este erro, mas não na linha do elemento removeUI, ele estava no próximo observador por algum motivo. Tirar o método removeUI de eventReactive e colocá-lo em outro lugar removeu esse erro para mim.
fonte
Eu acho que você pretendia fazer
url[i] <- paste(...
em vez de
url[i] = paste(...
. Em caso afirmativo, substitua=
por<-
.fonte