我被这个人打败了
我有一个闪亮的应用程序,它允许用户上传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事件时,它已正确更新,唯一的问题是数据表未显示新值。
我确定这很明显,但是如何在数据表中显示新值?
答案 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)