123

ようやくスクレイピング用のコードを作成することができました。正常に動作しているように見えたのですが、突然再実行すると、次のエラー メッセージが表示されました。

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
}
4

6 に答える 6

137

通常、このエラー メッセージは、関数でインデックスを使用しようとしたことを意味します。たとえば、このエラーメッセージを再現できます

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
于 2012-07-03T10:16:00.230 に答える
38

urlサブセット化を試みる前に 、ベクトル を定義しません。urlも基本パッケージの関数であるため、url[i]その関数をサブセット化しようとしています...これは意味がありません。

以前の R セッションで定義urlした可能性がありますが、そのコードをスクリプトにコピーするのを忘れていました。

于 2012-07-03T10:01:21.007 に答える
1

未定義の変数を意味する可能性があります。

于 2021-03-02T10:48:33.420 に答える