Nói chung, thông báo lỗi này có nghĩa là bạn đã cố gắng sử dụng lập chỉ mục trên một hàm. Bạn có thể tạo lại thông báo lỗi này, chẳng hạn như
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
Bao đóng được đề cập trong thông báo lỗi là (một cách lỏng lẻo) hàm và môi trường lưu trữ các biến khi hàm được gọi.
Trong trường hợp cụ thể này, như Joshua đã đề cập, bạn đang cố gắng truy cập url
hàm dưới dạng một biến. Nếu bạn xác định một biến có tên url
, thì lỗi sẽ biến mất.
Thông thường, bạn nên tránh đặt tên biến sau các hàm base-R. (Việc gọi các biến data
là nguyên nhân phổ biến của lỗi này.)
Có một số lỗi liên quan khi cố gắng tập hợp các toán tử hoặc từ khóa.
`+`[1]
## Error in `+`[1] : object of type 'builtin' is not subsettable
`if`[1]
## Error in `if`[1] : object of type 'special' is not subsettable
Nếu bạn đang gặp phải sự cố này shiny
, nguyên nhân rất có thể là bạn đang cố gắng làm việc với một reactive
biểu thức mà không gọi nó dưới dạng một hàm bằng cách sử dụng dấu ngoặc đơn.
library(shiny)
reactive_df <- reactive({
data.frame(col1 = c(1,2,3),
col2 = c(4,5,6))
})
Trong khi chúng ta thường làm việc với các biểu thức phản ứng trong bóng như thể chúng là khung dữ liệu, chúng thực sự là các hàm trả về khung dữ liệu (hoặc các đối tượng khác).
isolate({
print(reactive_df())
print(reactive_df()$col1)
})
col1 col2
1 1 4
2 2 5
3 3 6
[1] 1 2 3
Nhưng nếu chúng tôi cố gắng đặt nó mà không có dấu ngoặc đơn, thì chúng tôi thực sự đang cố gắng lập chỉ mục một hàm và chúng tôi gặp lỗi:
isolate(
reactive_df$col1
)
Error in reactive_df$col1 : object of type 'closure' is not subsettable
[]
thay vì()
!