模块R Shiny中的insertUI

时间:2020-06-27 01:09:32

标签: r shiny module

我的目标是合并用户的数据集,用户将上传2个数据集并进行合并,如果他们想合并另一个数据集,我将其中的一个存储起来,然后合并并插入另一个模块,然后继续进行。我尝试通过在另一个模块中插入一个模块来实现。我不知道我在做什么错,它没有给我输出所插入模块的输出。需要在模块中完成。

我将不胜感激,因为我被坚持了一段时间。

用于复制以上代码的代码:

require(shiny)
require(shinyFiles)

#===========================================================

uploadDtUI <- function(id){
  ns <- NS(id)
  tagList(
    shinyFilesButton(ns("file_2"), "Select The The Second Dataset", "Please Select The Second Dataset",FALSE),
    verbatimTextOutput(ns("filechosen_new"))
  )
}

uploadDt <- function(input, output, session) {
  
  ns <- session$ns
  roots = c(getVolumes()())
  shinyFileChoose(input,"file_2",session = session,root = roots)
  file_new <- reactive(input$file_2)
  
  output$filechosen_new <- renderPrint({
    as.character(parseFilePaths(roots, input$file_new)[4])
  })
  

}

#=============================================================


selectFilesInput <- function(id) {
  ns <- NS(id)
  tagList(shinyFilesButton(ns("file"), "Select The First Dataset", "Please Select The First Dataset",FALSE),
          verbatimTextOutput(ns("filechosen")),
          actionButton(ns("add_ui"), "Add Another Dataset to Merge"),
          div(id = ns("placeholder"))
  )
}


selectFiles <- function(input, output, session) {
  ns <- session$ns
  vol <- c(getVolumes()())
  shinyFileChoose(input,"file",session = session,root = vol)

  file <- reactive(input$file)
  
  output$filechosen <- renderPrint({
    as.character(parseFilePaths(vol, input$file)[4])
    
  })
  
  ctn <- reactiveVal(0)
  
  observeEvent(input$add_ui, {
    ctn(ctn() + 1)
    
   new_id <- paste("module", ctn(), sep="_")
    
    insertUI(
      selector = paste0('#', ns('placeholder')),
      where = "afterBegin",
      ui = uploadDtUI(ns(new_id))
    )
    callModule(uploadDt,ns(new_id))
  })
  
}




#=============================================================

ui <- fluidPage(
  selectFilesInput("foo")
  
)

server <- function(input, output, session) {
  datafile <- callModule(selectFiles, "foo")
  
}

shinyApp(ui, server)

0 个答案:

没有答案