R有光泽:从输入数据中保存所选择的因子

时间:2018-04-09 09:14:17

标签: r input shiny

我对R shiny和observ功能有疑问。是否可以保存所选因子和工作状态?例如,我创建了一个可以从输入数据中选择组合名的程序。使用书签并使用浏览器中的链接重新打开程序后,将加载输入数据,但会重置组合名称的选择因子。但我想保存所选择的姓氏。有人有想法吗?谢谢你的帮助!

    ui <- function(request) {
  fluidPage(
    sidebarLayout(
      sidebarPanel(
        radioButtons(
          "fileType_Input",
          label = h5(""),
          choices = list(".csv" = 1, ".xlsx" = 2),
          selected = 1,
          inline = TRUE
        ),

        fileInput('file1', ''  ),
        selectInput("letters", label=NULL, factors, multiple = TRUE),
        bookmarkButton()
      ),
      mainPanel(
        tableOutput("contents")
      )
    )
  )
}
server <- function(input, output,session) {

  myData <- reactive({
    inFile <- input$file1

    # Get the upload file
    if (is.null(inFile)) {
      return(NULL) }

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

    } else {
      read_excel(inFile$datapath)
    }

  })


  observe({
    if(is.null(input$letters)){
      data <- myData()
      if(is.null(data)){

      }else{
        factors <- colnames(data)
        t$choices <- input$letters  # append(u$choices,input$letters2)
        updateSelectInput(session, "letters",
                          choices = factors #[!factors2 %in% u$choices)]
        )}
    }
  })

  #Display all input Data
  output$contents <- renderTable(digits = NULL,{
    df <-myData()
    df
  })

}
enableBookmarking("server")
shinyApp(ui, server)

1 个答案:

答案 0 :(得分:0)

您可以将所有需要的输入保存在文件中,然后使用updateRadioButtons()等功能重新应用它们。

将其保存到文件中可能如下所示:

observeEvent(input$someRadioButton, {
  states <- list()
  states$someRadioButton <- input$someRadioButton 
  #you can save all the needed inputs like this
  ...
  save(states, file = paste0(getwd(), "/myfile"))
})