通常,此错误消息表示您已尝试在函数上使用索引。您可以使用以下方式重现此错误消息:
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
错误消息中提到的闭包是(宽松地)函数和调用函数时存储变量的环境。
如Joshua所述,在这种特定情况下,您试图将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
[]
而不是()
!时,也会发生这种情况。