エラー : 'closure' 型のオブジェクトはサブセット化できません 質問する

エラー : '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
}

ベストアンサー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

エラー メッセージに記載されているクロージャは、(大まかに言えば) 関数と、関数が呼び出されたときに変数を格納する環境です。


この特定のケースでは、ジョシュアが言ったように、url関数を変数として定義します。 という名前の変数を定義するとurl、エラーはなくなります。

良い習慣として、通常は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))
})

Shinyではリアクティブ式をデータフレームのように扱うことが多いが、実際には機能データフレーム(またはその他のオブジェクト)を返します。

isolate({
    print(reactive_df())
    print(reactive_df()$col1)
})
  col1 col2
1    1    4
2    2    5
3    3    6
[1] 1 2 3

But if we try to subset it without parentheses, then we're actually trying to index a function, and we get an error:

isolate(
    reactive_df$col1
)
Error in reactive_df$col1 : object of type 'closure' is not subsettable

おすすめ記事