单击R Shiny中的按钮后将输入字段重置为null
Posted
技术标签:
【中文标题】单击R Shiny中的按钮后将输入字段重置为null【英文标题】:Resetting Input field to null after clicking button in R Shiny 【发布时间】:2014-06-19 09:22:09 【问题描述】:我正在构建一个应用程序,用户可以在其中逐列输入数据值。单击添加按钮后,输入的值将按列附加到现有值。例如 如果输入 col1、2、3 并单击 ADD,我们将在显示中显示
col1
2
3
如果输入 col2、4、7 并单击 ADD,我们就有了显示
col1 col2
2 4
3 7
等等
我希望当单击添加按钮时,输入字段被清除以允许输入新列。请在下面找到 ui 和服务器的代码。输出表也无法正确显示,如果您能帮助解决这个问题,我们将不胜感激。
ui.R
shinyUI(pageWithSidebar(
headerPanel("My data table"),
sidebarPanel(h5("Enter input"),
textInput("colname","Enter Column Name",NA),
numericInput("x","X",NA),
numericInput("y","Y",NA),
br(),
actionButton("Add","ADD")),
mainPanel(verbatimTextOutput("out"))
))
还有
server.R
shinyServer(function(input,output)
myTable <- reactive(
if(input$Add > 0)
return(isolate(
colnm <- input$colname
x <- input$x
y <- input$y
result <- data.frame(rbind(colnm,x,y))
result
))
)
output$out <- renderTable(
myTable()
)
)
【问题讨论】:
【参考方案1】:需要使用renderTable
而不是verbatimTextOutput
呈现表格。我猜你想保留旧的输入。一种方法是使用reactiveValues
。编辑:我没有看到你想重置输入。要重置输入,请使用 updateNumericInput
和 updateTextInput
函数。您还需要将 session
变量传递给您的 server
函数。
runApp(
list(ui = pageWithSidebar(
headerPanel("My data table"),
sidebarPanel(h5("Enter input"),
textInput("colname","Enter Column Name",NA),
numericInput("x","X",NA),
numericInput("y","Y",NA),
br(),
actionButton("Add","ADD")),
mainPanel(tableOutput("out"))
),
server = function(input,output,session)
myValues <- reactiveValues()
observe(
if(input$Add > 0)
isolate(
colnm <- input$colname
x <- input$x
y <- input$y
if(!is.null(myValues$myDf))
myValues$myDf <- cbind(myValues$myDf,
data.frame(setNames(list(c(x, y)), colnm))
)
else
myValues$myDf <- data.frame(setNames(list(c(x, y)), colnm))
)
updateNumericInput(session, "x","X", NA)
updateNumericInput(session, "y","Y", NA)
updateTextInput(session, "colname","Enter Column Name",NA)
)
output$out <- renderTable(
myValues$myDf
)
)
)
编辑:
你可以改成
updateNumericInput(session, "x","X", 3)
updateNumericInput(session, "y","Y", 5)
updateTextInput(session, "colname","Enter Column Name",'Default NAME')
它有效。现在值更改为默认值 3,5 和“默认名称”
【讨论】:
我很感兴趣,不知道可以在单个文件中运行应用程序,好主意。我不清楚 NA 在更新数字和文本输入功能中代表什么。我猜这是什么将字段设置为清空或清除字段?此外,我尝试将 NA 更改为 NA 以外的值,但应用程序挂起并且不返回表或添加列,请问这可能是什么原因? NA 表示空值。您可以将数字 NA 更改为数字,将文本更改为字符,它可以工作。 我确实更改了 NA 值,但是当我单击添加时,它没有显示任何内容。另外,我必须使用观察功能吗?如果是这样,为什么?我一直在使用没有观察功能的操作按钮。它到底有什么作用? 请记住,更改不是即时的:“消息是在所有观察者(包括输出)完成运行后收集和发送的。” [shiny.rstudio.com/reference/shiny/0.14/updateTextInput.html]以上是关于单击R Shiny中的按钮后将输入字段重置为null的主要内容,如果未能解决你的问题,请参考以下文章
在 R Shiny 中,如何使用 actionButton 重置 rhandsontable 中的数据(反转所有手动输入)?