单击R中的按钮后,将输入字段重置为空
我正在构建一个应用程序,用户可以在其中按列为表输入数据值。单击“添加”按钮后,输入的值将按列追加到现有值。例如 如果输入col1、2、3并单击ADD,则显示单击R中的按钮后,将输入字段重置为空,r,user-interface,dataframe,shiny,R,User Interface,Dataframe,Shiny,我正在构建一个应用程序,用户可以在其中按列为表输入数据值。单击“添加”按钮后,输入的值将按列追加到现有值。例如 如果输入col1、2、3并单击ADD,则显示 col1 2 3 如果输入col2、4、7并单击ADD,则显示 col1 col2 2 4 3 7 等等 我希望在单击add按钮时,输入字段被清除,以允许输入新列。请查找以下ui和服务器代码。输出表也不能正确显示,如能帮助解决此问题,我们将不胜感激 ui.R shinyUI(pageWithSide
col1
2
3
如果输入col2、4、7并单击ADD,则显示
col1 col2
2 4
3 7
等等
我希望在单击add按钮时,输入字段被清除,以允许输入新列。请查找以下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(功能(输入、输出){
我的表(表0)
返回(隔离)({
colnm需要使用renderable
而不是逐字输出来呈现该表。我想您希望保留旧的输入。一种方法是使用reactiveValues
。编辑:我看不出您想要重置输入。要重置输入,请使用updateEnumericInput
和updateExtInput
函数。您还需要在服务器
函数中传递一个会话
变量
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
})
})
)
现在值变为默认值3,5和“默认名称”我很好奇,不知道可以在一个文件中运行应用程序,好主意。我不清楚NAs在更新数字和文本输入函数中代表什么。我猜这就是将字段设置为空或清除字段的原因。此外,我尝试将NAs更改为除NA以外的其他值,但应用程序挂起并且不返回表或添加列,请问是什么原因造成的?NA表示空值。您可以将数字NA更改为数字,将文本更改为字符,并且可以正常工作。我确实更改了NA值,但当我单击“添加”时,它不会显示任何内容。此外,我必须使用obs吗观察功能?如果是,原因是什么?我一直在使用操作按钮,但没有观察功能。它到底起什么作用?
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')