【发布时间】:2020-04-03 15:51:31
【问题描述】:
我有一个带有 actionButton 的 Shiny 应用程序,单击该按钮时会运行一个查询数据库的函数并返回结果表。然后,我将应用程序中的表格显示为数据表。
这很好用。
sqlOutput <- eventReactive(input$sqlButton, {
sqlScript(conn, ...)
})
output$sqlSearchResults <- DT::renderDT(server = TRUE, {
DT::datatable(sqlOutput()[[1]],
rownames = FALSE,
extensions = c("FixedColumns"),
class = 'cell-border stripe',
... )
})
但是,我还有另一个 actionButton“deleteRows”,我想用它在单击时删除选定的行。我添加了一个observeEvent,它将修改后的表分配给一个新变量。然后数据表输出使用新变量“testdf”。但它不起作用。错误显示为 Warning: Error in inherits: object 'testdf' not found,其中行号对应于数据表输出。
sqlOutput <- eventReactive(input$sqlButton, {
sqlScript(conn, ...)
})
observeEvent(input$deleteRows,{
if (!is.null(input$sqlSearchResults_rows_selected)) {
testdf <- sqlOutput()[[1]][-as.numeric(input$sqlSearchResults_rows_selected),]
} else testdf <- sqlOutput()[[1]]
})
output$sqlSearchResults <- DT::renderDT(server = TRUE, {
DT::datatable(testdf,
rownames = FALSE,
extensions = c("FixedColumns"),
class = 'cell-border stripe',
... )
})
我做错了什么?
【问题讨论】:
-
请看我更新的答案。此外,只是一个旁注 - 您可能应该编辑您的问题而不是添加答案。这似乎是其他人可以效仿的最佳做法。