Dear Cole,
Thank you for this information. I had about 30-40 files with different names, and I wanted to upload all of them at the same time, and then read specific documents within it, using the specific names of the csvs. I was hoping that I could select a folder path and do it. But it did not seem possible.
I was able to get it to work using fileInput with multiple=TRUE where I selected all the csv files from the folder. I was looking for ways in which I could use the name of the csv file in read.csv. Here is a working solution I used for it (using the same code as above) for anyone who would want to do the same thing ----
library(shiny)
ui<-fluidPage(
mainPanel("Hydro-BID-Opt",
tabsetPanel(
tabPanel("Information required for the model",
numericInput("Res", label = h3("Total Res"),
min = 1, max = 25,
value = 3),
numericInput("Muns", label = h3("Total Users"),
min = 1, max = 150,
value = 5),
numericInput("Time", label = h3("Total Number of Months"),
min = 0, max = 60,
value = 12)
),
tabPanel("Adding the folder",
fileInput("directory", label=h5("Upload all the files as described in the manual"), accept = ".csv", multiple = TRUE)
),
tabPanel("Results",
h3("Results for Cost"),
textOutput("Table_Cost")
)
)))
server<-function(input, output, session) {
Mo <- reactive({input$Time})
R <- reactive({input$Res})
Mu <- reactive({input$Muns})
#######ResMax
Resmaxcsv <- reactive({
read.csv(file=input$directory$datapath[input$directory$name=="Maximum_Reservoir_Capacity.csv"] , check.names=F, header = T)
})
#####Cost
Costcsv <- reactive({
read.csv(file=input$directory$datapath[input$directory$name=="Cost.csv"] , check.names=F, header = T)
})
#####Running the model
Test <- reactive({
nT<-Mo()
nR<-R()
nM<-Mu()
## ResMax
resmaxcapacity<-Resmaxcsv()
SCmax_rt<-array(data = resmaxcapacity[,2] * 1e-6, dim = c(nR, nT))
## Cost
costcsv<-Costcsv()
cost<-as.matrix(costcsv[,2:(nM+1)])
costQ <- array(data = cost[1:nR, 1:nM], dim = c( nR, nM, nT))
App<-apply(costQ, MARGIN = c(1,3), mean)
TOTAL<-SCmax_rt+App
print(TOTAL)
})
output$Table_Cost<-renderPrint({Test()})
}
shinyApp(ui = ui, server = server)