如何将Excel工作表导入光泽并使用按钮更新

时间:2019-06-03 18:12:27

标签: r shiny

我被这个人打败了

我有一个闪亮的应用程序,它允许用户上传excel表格,然后将其显示在数据表中。然后,我想在表上执行一个功能,然后播放新数据。

据我了解,该过程应为1。允许将数据导入ui.R端的fileInput

sidebarMenu(
        menuItem("Dashboard", tabName = "dashboard", icon = icon("dashboard")),
        fileInput("csvs",
                  label="Upload CSVs here",
                  multiple = FALSE)

2。将数据存储为无功值

  data <- reactive({
    inFile <- input$csvs
    if (is.null(inFile)) { return(NULL) }    
    dataFile <- read_excel(inFile$datapath,sheet=1)
    dataFile<-data.frame(EndoPaste(dataFile)[1],stringsAsFactors=FALSE)
  })

RV <- reactiveValues(data = data.frame())

3。在数据表中显示数据

  output$endotable = DT::renderDT({
    RV$data<-data()
  },options = list(scrollX = TRUE))

4。允许用户对数据运行功能

  observeEvent(input$textPrep,{

#My custom function
    mywordsOGD<-input$caption
    mywordsOGD<-unlist(strsplit(mywordsOGD,","))
    RV$data<-textPrep(RV$data[,1],mywordsOGD,NegEx="TRUE")

  },ignoreInit = TRUE)

5。在dataTable中显示新数据

当我使用browser()RV $ data运行observe事件时,它已正确更新,唯一的问题是数据表未显示新值。

我确定这很明显,但是如何在数据表中显示新值?

1 个答案:

答案 0 :(得分:1)

类似这样的东西:

Data1 <- reactiveVal(NULL)
Data2 <- reactiveVal(NULL)

observe({
  inFile <- input$csvs
  if (!is.null(inFile)) {   
    dataFile <- read_excel(inFile$datapath, sheet=1)
    dat <- data.frame(EndoPaste(dataFile)[1], stringsAsFactors=FALSE)
    Data1(dat)
    Data2(dat)
  }
})

output$endotable = DT::renderDT({
  Data2()
},options = list(scrollX = TRUE))

observeEvent(input$textPrep,{
  mywordsOGD <- input$caption
  mywordsOGD <- unlist(strsplit(mywordsOGD, ","))
  Data2(textPrep(Data1()[,1], mywordsOGD, NegEx="TRUE"))
},ignoreInit = TRUE)