Error in url[i] = paste("http://en.wikipedia.org/wiki/", gsub(" ", "_", :
object of type 'closure' is not subsettable
我不确定为什么更改我的代码中没有任何内容。
请告知。
library(XML)
library(plyr)
names <- c("George Clooney", "Kevin Costner", "George Bush", "Amar Shanghavi")
for(i in 1:length(names)) {
url[i] = paste('http://en.wikipedia.org/wiki/', gsub(" ","_", names[i]) , sep="")
# some parsing code
}
#1 楼
通常,此错误消息表示您已尝试在函数上使用索引。您可以使用例如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
是此错误的常见来源。)尝试对运算符或关键字进行子集化时存在一些相关的错误。 >
如果您在
shiny
中遇到此问题,则最可能的原因是您尝试使用reactive
表达式,而没有使用括号将该函数作为函数调用。`+`[1]
## Error in `+`[1] : object of type 'builtin' is not subsettable
`if`[1]
## Error in `if`[1] : object of type 'special' is not subsettable
虽然我们经常将闪亮的反应式表达式视为数据帧,但它们实际上是返回数据帧(或其他对象)的函数。
library(shiny)
reactive_df <- reactive({
data.frame(col1 = c(1,2,3),
col2 = c(4,5,6))
})
但是,如果我们尝试在不带括号的情况下对其进行子集化,则实际上是在尝试为函数建立索引,并且会出现错误:
#2 楼
在尝试对向量进行子集化之前,您无需定义向量url
。 url
也是基本软件包中的一个函数,因此url[i]
试图对该函数进行子集处理……这没有任何意义。该代码到您的脚本。#3 楼
如果发生类似的错误警告:$中的错误:类型为'closure'的对象不可子集
[无可用堆栈跟踪]
只需使用以下方法添加相应的包名称: :
例如
而不是标签(....)
编写
shiny :: tags(....)
#4 楼
我遇到了这个问题,试图在反应性事件中删除ui元素:myReactives <- eventReactive(input$execute, {
... # Some other long running function here
removeUI(selector = "#placeholder2")
})
我遇到此错误,但是在removeUI元素行中却没有,由于某种原因之后的下一个观察者。从eventReactive中取出removeUI方法并将其放在其他位置对我来说消除了此错误。
#5 楼
我认为您是打算执行url[i] <- paste(...
而不是url[i] = paste(...
。如果是这样,请将=
替换为<-
。
评论
当我只是错误地输入[]而不是()时,也会发生这种情况,就像我的情况一样。