Im Allgemeinen bedeutet diese Fehlermeldung, dass Sie versucht haben, die Indizierung für eine Funktion zu verwenden. Sie können diese Fehlermeldung beispielsweise mit reproduzieren
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
Der in der Fehlermeldung erwähnte Abschluss ist (lose) die Funktion und die Umgebung, in der die Variablen beim Aufruf der Funktion gespeichert werden.
In diesem speziellen Fall versuchen Sie, wie Joshua erwähnt hat, auf die url
Funktion als Variable zuzugreifen . Wenn Sie eine Variable mit dem Namen definieren url
, verschwindet der Fehler.
Aus bewährten Gründen sollten Sie normalerweise vermeiden, Variablen nach Base-R-Funktionen zu benennen. (Das Aufrufen von Variablen data
ist eine häufige Ursache für diesen Fehler.)
Es gibt mehrere verwandte Fehler beim Versuch, Operatoren oder Schlüsselwörter zu unterteilen.
`+`[1]
## Error in `+`[1] : object of type 'builtin' is not subsettable
`if`[1]
## Error in `if`[1] : object of type 'special' is not subsettable
Wenn Sie in auf dieses Problem stoßen shiny
, ist die wahrscheinlichste Ursache, dass Sie versuchen, mit einem reactive
Ausdruck zu arbeiten, ohne ihn als Funktion in Klammern aufzurufen.
library(shiny)
reactive_df <- reactive({
data.frame(col1 = c(1,2,3),
col2 = c(4,5,6))
})
Während wir oft mit reaktiven Ausdrücken arbeiten, die glänzend sind, als wären sie Datenrahmen, sind sie tatsächlich Funktionen , die Datenrahmen (oder andere Objekte) zurückgeben.
isolate({
print(reactive_df())
print(reactive_df()$col1)
})
col1 col2
1 1 4
2 2 5
3 3 6
[1] 1 2 3
Wenn wir jedoch versuchen, es ohne Klammern zu unterteilen, versuchen wir tatsächlich, eine Funktion zu indizieren, und es wird eine Fehlermeldung angezeigt:
isolate(
reactive_df$col1
)
Error in reactive_df$col1 : object of type 'closure' is not subsettable
[]
statt()
!