В моем блестящем выходе у меня есть DataTable. У меня есть кнопка («Вычислить») и список. Я хочу следующее поведение:Как реализовать кнопку сброса в R блестящей?
- когда сценарий загружается, таблица данных визуализируется с помощью объекта NULL
- , когда пользователь нажимает на «Compute», таблица данных показана
- , когда пользователь выбирает «Сброс» из списка, таблица данных стирается
Как-то я не могу окунуться в блестящий блеск, чтобы достичь этого. Вот элементарный код для иллюстрации моя проблема:
server.R
server.fun <- function(input, output) {
output$results <- renderDataTable({
mytab <- data.frame(ID=1:10, blah=letters[1:10])
input$compute
print("computing")
mytab
})
output$results <- renderDataTable({
input$reset
print("resetting")
NULL
})
}
ui.R
shinyUI({
basicPage(
actionButton("compute", "Compute"),
selectInput("reset", "",
list("------"="",
"Do nothing"="nothing",
"Reset"="reset")
),
dataTableOutput("results")
)
})
Очевидно, что он не делает то, что я хочу, чтобы это сделать , Я не думаю, что мне разрешено подключить две реактивные функции к одному и тому же объекту, output$results
(am I?). Когда я запускаю блестящее приложение, вызывается обе функции. Когда я затем нажимаю «вычислять», ничего не происходит. Я не знаю, почему.
Вот еще один вопрос о проблеме, отчасти это решение - оно работает, но имеет ненужный выход. Я попытался использовать reactiveValue. Я определяю два дополнительных элемента интерфейса: «foo» и «bar».
server.R
server.fun <- function(input, output) {
rv <- reactiveValues()
rv$mytab <- NULL
output$foo <- renderText({
input$compute
rv$mytab <- data.frame(ID=1:10, blah=letters[1:10])
"computing"
})
output$bar<- renderText({
input$reset
rv$mytab <- NULL
"resetting"
})
output$results <- renderDataTable({
rv$mytab
})
}
ui.R
shinyUI({
basicPage(
actionButton("compute", "Compute"),
selectInput("reset", "",
list("------"="",
"Do nothing"="nothing",
"Reset"="reset")
),
dataTableOutput("results"),
textOutput("foo"),
textOutput("bar")
)
})
Все лучшее решение?
если он работает на вас, удалите этот 'dummyoutput', но в какой-то момент он будет работать только с этим, поэтому я не знаю – hedgedandlevered
Спасибо! «Наблюдать» + реактивные ценности - это то, что мне нужно. – January