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