我想輸入兩個文件,執行一些轉換並返回一個數據表。它工作正常,如果我硬編碼的文件路徑,但不是如果我使用fileInput
。我使用的是obersveEvent
,因爲選項和操作比我在可重現示例中顯示的要複雜一些。 關於代碼可能出錯的任何建議?fileInput不返回任何數據框
library(shiny)
library(shinydashboard)
library(data.table)
library(DT)
##
ui <- shinyUI(pageWithSidebar(
headerPanel("Test app"),
sidebarPanel(
fileInput("Env_db1", "Choose CSV File for DB1",
accept = c(
"text/csv",
"text/comma-separated-values,text/plain",
".csv")
),
fileInput("Env_db2", "Choose CSV File for DB2",
accept = c(
"text/csv",
"text/comma-separated-values,text/plain",
".csv")
)
,
actionButton(
inputId = "submit_loc",
label = "Submit")
),
mainPanel(
DT::dataTableOutput("table"))
)
)
##
server <- shinyServer(function(input, output) {
observeEvent(
eventExpr = input$submit_loc,
handlerExpr =
{
req(input$file1)
inFile1 <- input$file1
if(is.null(input$file1)) return(NULL)
Env_1<- read.csv(inFile1$datapath, header = TRUE, sep = ";")
req(input$file2)
inFile2 <- input$file2
if(is.null(input$file2)) return(NULL)
Env_2 <- read.csv(inFile2$datapath, header = TRUE, sep = ";")
Difference <-rbind(Env_1,Env_2)
output$table = DT::renderDataTable(server = TRUE,{
DT::datatable(Difference,
extensions=c("Buttons",'Scroller'),
options = list(dom = 'Bfrtip',
buttons = c('copy', 'csv',
'excel', 'pdf',
'print'),
scrollY = 500,
scroller = TRUE)
)
})
})
})
##
shinyApp(ui = ui, server = server)