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 stockent les variables lorsque la fonction est appelée.
Dans ce cas précis, comme Joshua l'a mentionné, vous essayez d'accéder à la url
fonction en tant que variable. Si vous définissez une variable nommée url
, l'erreur disparaît.
Par bonne pratique, vous devez généralement éviter de nommer les variables après les fonctions base-R. (L'appel de variables data
est une source courante de cette erreur.)
Il existe plusieurs erreurs liées lors de 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 reactive
expression sans l'appeler en tant que fonction en utilisant des parenthèses.
library(shiny)
reactive_df <- reactive({
data.frame(col1 = c(1,2,3),
col2 = c(4,5,6))
})
Alors que nous travaillons souvent avec des expressions réactives en brillant comme s'il s'agissait de blocs de données, ce sont en fait des fonctions qui renvoient des blocs 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 le sous-ensemble sans parenthèses, alors 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
[]
au lieu de()
!