【问题标题】:R shiny: get all Factors after input DataR闪亮:输入数据后获取所有因子
【发布时间】:2023-03-23 17:50:01
【问题描述】:

嘿,我有一个闪亮的应用程序,它输入数据并与它们一起工作。但现在我想要一个动作按钮,它为子集功能选择因子。问题是当我启动应用程序并输入数据时,因素不存在,在第一次点击操作按钮后,因素得到数据的列名。

如何进行编程,以便在读取数据后直接向我显示因子。感谢您的帮助!

这里是 UI 和服务器的一部分

              radioButtons(
                  "fileType_Input",
                  label = h5("Choose file type and click on browse"),
                  choices = list(".csv" = 1, ".xlsx" = 2),
                  selected = 1,
                  inline = TRUE
                ),

                fileInput('file1', ''  ),

                selectInput("letters", label=NULL, factors, multiple = TRUE),

                actionButton("choose", "Auswahl"),

                verbatimTextOutput("list")

服务器:

shinyServer(function(input, output, session) {

  # Get the upload file
  myData <- reactive({
    inFile <- input$file1

    if (is.null(inFile)) {
      return(NULL) }

    if (input$fileType_Input == "1") {
      read.csv2(inFile$datapath,
                 header = TRUE,
                 stringsAsFactors = FALSE)
    } else {
      read_excel(inFile$datapath)
    }
  })

  # When the Choose button is clicked, add the current letters to v$choices
  # and update the selector
  observeEvent(input$choose, {
    data <- myData()
    factors <- colnames(data)   # get the names of the Factors in a Vector to select them
    v$choices <- input$letters  # append(v$choices,input$letters)
    updateSelectInput(session, "letters",
                      choices = factors #[!factors %in% v$choices)]
    )
  })

  output$list <- renderPrint({
    v$choices
  })

【问题讨论】:

    标签: r shiny shiny-server


    【解决方案1】:

    您可以将代码放入观察中,而不是将代码放入 observeEvent for input$choose。像这样的:

      observe({
    
        if(!is.null(myData()))
        {
          data <- myData()
          factors <- colnames(data)   # get the names of the Factors in a Vector to select them
          v$choices <- input$letters  # append(v$choices,input$letters)
          updateSelectInput(session, "letters",
                            choices = factors #[!factors %in% v$choices)]
          )
        }
      })
    

    希望对你有帮助!

    【讨论】:

    • 感谢您的帮助,不幸的是它并没有像我想象的那样工作。我想保留“观察事件”,并且只安装一个函数,一旦“因子”向量设置好,我就可以在数据加载后安装它,这样他就可以直接向我显示。如果我按照您建议的方式进行操作,我的按钮将不再起作用。
    • 然后,您可以在反应式表达式中updateSelectInput,而不是将其放入观察中。
    • 对不起,但我不明白你的想法......我尝试了一些反应式表达,但我现在还有办法。能再给我解释一下吗?
    • 所以我明白了!感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-17
    • 2014-04-11
    • 1970-01-01
    • 1970-01-01
    • 2018-09-23
    • 2014-09-18
    • 2020-02-03
    相关资源
    最近更新 更多