Обычно это сообщение об ошибке означает, что вы пытались использовать индексацию для функции. Вы можете воспроизвести это сообщение об ошибке, например,
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
Замыкание, упомянутое в сообщении об ошибке, является (в общих чертах) функцией и средой, в которой хранятся переменные при вызове функции.
В этом конкретном случае, как упомянул Джошуа, вы пытаетесь получить доступ к url
функции как к переменной. Если вы определите переменную с именем url
, ошибка исчезнет.
Как правило, вам следует избегать именования переменных после функций base-R. (Вызов переменных data
- частый источник этой ошибки.)
Есть несколько связанных ошибок при попытке подмножества операторов или ключевых слов.
`+`[1]
## Error in `+`[1] : object of type 'builtin' is not subsettable
`if`[1]
## Error in `if`[1] : object of type 'special' is not subsettable
Если вы столкнулись с этой проблемой в shiny
, наиболее вероятная причина заключается в том, что вы пытаетесь работать с reactive
выражением, не вызывая его как функцию, используя круглые скобки.
library(shiny)
reactive_df <- reactive({
data.frame(col1 = c(1,2,3),
col2 = c(4,5,6))
})
Хотя мы часто работаем с реактивными выражениями в сиянии, как если бы они были фреймами данных, на самом деле это функции , возвращающие фреймы данных (или другие объекты).
isolate({
print(reactive_df())
print(reactive_df()$col1)
})
col1 col2
1 1 4
2 2 5
3 3 6
[1] 1 2 3
Но если мы попытаемся разбить его на подмножество без скобок, то на самом деле мы попытаемся проиндексировать функцию и получим ошибку:
isolate(
reactive_df$col1
)
Error in reactive_df$col1 : object of type 'closure' is not subsettable
[]
вместо()
!