Secara umum, pesan kesalahan ini berarti Anda telah mencoba menggunakan pengindeksan pada suatu fungsi. Anda dapat mereproduksi pesan kesalahan ini dengan, misalnya
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
Penutupan yang disebutkan dalam pesan kesalahan adalah (secara longgar) fungsi dan lingkungan yang menyimpan variabel saat fungsi tersebut dipanggil.
Dalam kasus khusus ini, seperti yang disebutkan Joshua, Anda mencoba mengakses url
fungsi sebagai variabel. Jika Anda mendefinisikan variabel bernama url
, maka kesalahannya akan hilang.
Sebagai praktik yang baik, Anda biasanya harus menghindari penamaan variabel setelah fungsi basis-R. (Memanggil variabel data
adalah sumber umum kesalahan ini.)
Ada beberapa kesalahan terkait untuk mencoba subset operator atau kata kunci.
`+`[1]
## Error in `+`[1] : object of type 'builtin' is not subsettable
`if`[1]
## Error in `if`[1] : object of type 'special' is not subsettable
Jika Anda mengalami masalah ini di shiny
, kemungkinan besar penyebabnya adalah Anda mencoba bekerja dengan reactive
ekspresi tanpa memanggilnya sebagai fungsi menggunakan tanda kurung.
library(shiny)
reactive_df <- reactive({
data.frame(col1 = c(1,2,3),
col2 = c(4,5,6))
})
Meskipun kita sering bekerja dengan ekspresi reaktif dalam bentuk mengkilap seolah-olah itu adalah bingkai data, sebenarnya itu adalah fungsi yang mengembalikan bingkai data (atau objek lain).
isolate({
print(reactive_df())
print(reactive_df()$col1)
})
col1 col2
1 1 4
2 2 5
3 3 6
[1] 1 2 3
Tetapi jika kita mencoba untuk membuat subset tanpa tanda kurung, maka kita sebenarnya mencoba mengindeks suatu fungsi, dan kita mendapatkan kesalahan:
isolate(
reactive_df$col1
)
Error in reactive_df$col1 : object of type 'closure' is not subsettable
[]
bukan()
!