Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
单击R中的按钮后,将输入字段重置为空_R_User Interface_Dataframe_Shiny - Fatal编程技术网

单击R中的按钮后,将输入字段重置为空

单击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并单击ADD,则显示

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')