【发布时间】:2017-04-10 06:18:33
【问题描述】:
我正在编写一个闪亮的应用程序,它有一个表格(使用DT::renderDataTable),用户可以从中选择一行。但我希望用户也能够添加新行,如果他们想要的东西还没有在表中。我正在使用输入控件让用户输入新数据,并且我有一个操作按钮,如果按下该按钮,应该从输入值在表中创建新的数据行。但是按下按钮不会更新表格。
一个最小的例子:
library(shiny)
library(DT)
mydata = data.frame(id=letters[1:5], val=sample(10,5,T))
ui = fluidPage(dataTableOutput("table"),
textInput('NewID', 'Enter new ID'),
numericInput('NewVal', 'Enter new val', 1),
actionButton("goButton", "Update Table"))
server = function(input,output){
output$table = renderDataTable(mydata)
update = eventReactive(input$goButton, {
newrow = data.frame(id = input$NewID, val = input$NewVal)
mydata = rbind(mydata, newrow)
})
}
shinyApp(ui,server)
显然,这是处理此问题的错误方法。我尝试了将renderDataTable 和用于在renderUI、observe 和observe 和reactive 中更新mydata 的代码包装的各种组合,但我找不到正确的方法。
这是我的第一个闪亮的应用程序,所以也许有一个我不太了解的基本概念。什么是正确的方法?
【问题讨论】:
-
Error in force(default) : argument "value" is missing, with no default -
@HubertL 粘贴并运行代码时出现此错误?对我来说运行正常。
-
我需要为
numericInput()提供value参数 -
感谢@HubertL - 我现在已将其添加到示例中。必须是版本的东西,由于某种原因,当缺少值时它不会为我抛出错误。