selection1 是一个reactive 函数。在 Shiny 中,这意味着它是一个保存/缓存数据的函数。当您调用该函数并且它的输入发生变化时,它所保存的数据会更新。如果调用时输入没有改变,它会返回缓存的数据。
要访问数据,您需要使用selection1() 调用函数本身,然后使用通常的函数/代码来对数据进行子集化。所以在你的情况下,它会是
selection2 <- length(unique(selection1()$COLUMN))
您看到的错误是您尝试对函数执行 $ 操作而不使用 () 调用函数时的标准错误
foo <- function(){
bar = data.frame(bar = c(1,2,3))
}
foo$bar
Error in foo$bar : object of type 'closure' is not subsettable
foo()$bar
[1] 1 2 3
如果您想深入了解reactive 对象的结构的实际细节,只需在其上调用str 并查看
foo <- reactive()
str(foo)
function ()
- attr(*, "observable")=Classes 'Observable', 'R6' <Observable>
Public:
.dependents: environment
.domain: NULL
.error: FALSE
.execCount: 0
.func: function (...)
.invalidated: TRUE
.label: foo
.mostRecentCtxId:
.running: FALSE
.updateValue: function ()
.value: NULL
.visible:
clone: function (deep = FALSE)
getValue: function ()
initialize: function (func, label = deparse(substitute(func)), domain = getDefaultReactiveDomain(),
self: Observable, R6
- attr(*, "class")= chr "reactive"