<code>:object类型为'closure'的对象不是子集合

我终于能够弄清楚我的代码了。 它似乎工作正常,然后突然当我再次运行,我得到了以下错误信息:

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 } 

一般来说,这个错误信息意味着你已经试图在一个函数上使用索引。 例如,您可以重现此错误消息

 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 

在尝试对其进行子集化之前,您不要定义矢量urlurl也是基本包中的一个函数,所以url[i]正在尝试子集那个函数…这是没有意义的。

您可能在之前的R会话中定义了url ,但忘记将该代码复制到脚本中。

我认为你的意思是做url[i] <- paste(...

而不是url[i] = paste(...如果是这样替换= with <-