In generale, questo messaggio di errore significa che hai provato a utilizzare l'indicizzazione su una funzione. È possibile riprodurre questo messaggio di errore con, ad esempio
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 chiusura menzionata nel messaggio di errore è (vagamente) la funzione e l'ambiente che memorizza le variabili quando la funzione viene chiamata.
In questo caso specifico, come ha detto Joshua, stai cercando di accedere alla url
funzione come variabile. Se definisci una variabile denominata url
, l'errore scompare.
Come una questione di buona pratica, di solito dovresti evitare di nominare le variabili dopo le funzioni base-R. (La chiamata di variabili data
è una fonte comune di questo errore.)
Esistono diversi errori correlati per il tentativo di sottoinsiemi di operatori o parole chiave.
`+`[1]
## Error in `+`[1] : object of type 'builtin' is not subsettable
`if`[1]
## Error in `if`[1] : object of type 'special' is not subsettable
Se stai riscontrando questo problema shiny
, la causa più probabile è che stai cercando di lavorare con reactive
un'espressione senza chiamarla come una funzione usando le parentesi.
library(shiny)
reactive_df <- reactive({
data.frame(col1 = c(1,2,3),
col2 = c(4,5,6))
})
Sebbene lavoriamo spesso con espressioni reattive in shiny come se fossero frame di dati, in realtà sono funzioni che restituiscono frame di dati (o altri oggetti).
isolate({
print(reactive_df())
print(reactive_df()$col1)
})
col1 col2
1 1 4
2 2 5
3 3 6
[1] 1 2 3
Ma se proviamo a subsetarlo senza parentesi, allora stiamo effettivamente cercando di indicizzare una funzione e otteniamo un errore:
isolate(
reactive_df$col1
)
Error in reactive_df$col1 : object of type 'closure' is not subsettable
[]
invece di()
!