J'ai finalement été capable de travailler sur le code de ma note . Cela semblait fonctionner correctement et tout à coup, lorsque je l'ai relancé, j'ai reçu le message d'erreur suivant:
Error in url[i] = paste("http://en.wikipedia.org/wiki/", gsub(" ", "_", :
object of type 'closure' is not subsettable
Je ne sais pas pourquoi car je n'ai rien changé dans mon code.
S'il vous plaît donnez votre avis.
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
}
En général, ce message d'erreur signifie que vous avez essayé d'utiliser l'indexation sur une fonction. Vous pouvez reproduire ce message d'erreur avec, par exemple
mean[1]
## Error in mean[1] : object of type 'closure' is not subsettable
mean[[1]]
## Error in mean[[1]] : object of type 'closure' is not subsettable
mean$a
## Error in mean$a : object of type 'closure' is not subsettable
La fermeture mentionnée dans le message d'erreur est (vaguement) la fonction et l'environnement qui stocke les variables lorsque la fonction est appelée.
Comme Joshua l’a mentionné, dans ce cas précis, vous essayez d’accéder à la fonction url
en tant que variable. Si vous définissez une variable nommée url
, l'erreur disparaît.
En règle générale, évitez de nommer des variables après les fonctions base-R. (Appel de variables data
est une source courante de cette erreur.)
Il existe plusieurs erreurs liées à la tentative de sous-ensemble d'opérateurs ou de mots-clés.
`+`[1]
## Error in `+`[1] : object of type 'builtin' is not subsettable
`if`[1]
## Error in `if`[1] : object of type 'special' is not subsettable
Si vous rencontrez ce problème dans shiny
, la cause la plus probable est que vous essayez de travailler avec une expression reactive
sans l'appeler en tant que fonction à l'aide de parenthèses.
library(shiny)
reactive_df <- reactive({
data.frame(col1 = c(1,2,3),
col2 = c(4,5,6))
})
Bien que nous travaillions souvent avec des expressions réactives brillantes comme s'il s'agissait de trames de données, ce sont en fait des fonctions qui renvoient des trames de données (ou d'autres objets).
isolate({
print(reactive_df())
print(reactive_df()$col1)
})
col1 col2
1 1 4
2 2 5
3 3 6
[1] 1 2 3
Mais si nous essayons de la subdiviser sans parenthèses, nous essayons en fait d'indexer une fonction et nous obtenons une erreur:
isolate(
reactive_df$col1
)
Error in reactive_df$col1 : object of type 'closure' is not subsettable
Vous ne définissez pas le vecteur, url
, avant d'essayer de le subdiviser. url
est également une fonction du paquetage de base, donc url[i]
tente de sous-définir cette fonction ... ce qui n'a pas de sens.
Vous avez probablement défini url
dans votre session précédente, mais vous avez oublié de copier ce code dans votre script.
J'ai eu ce problème essayait de supprimer un élément d'interface utilisateur à l'intérieur d'un événement réactif:
myReactives <- eventReactive(input$execute, {
... # Some other long running function here
removeUI(selector = "#placeholder2")
})
Je recevais cette erreur, mais pas sur la ligne de l'élément removeUI, c'était dans l'observateur suivant pour une raison quelconque. Prendre la méthode removeUI dans eventReactive et le placer ailleurs a supprimé cette erreur pour moi.