Я пытаюсь сделать блестящее приложение, с помощью которого я могу загружать файлы Excel последовательно.Каждый раз, когда я загружаю файл, он добавляется к предыдущему загруженному файлу (при условии, что они имеют одинаковый формат).
То, что я сделал, я определил df_all
как пустой фрейм данных.каждый раз, когда я нажимаю кнопку загрузки и выбираю файл, я делал bind_rows(df_all, df)
.Но это не сработало.
Может кто-нибудь помочь мне понять, что я сделал не так?Я часами пробовал разные вещи, но безуспешно.
# set working directory
setwd(my_working_directory)
ipak <- function(pkg){
new.pkg <- pkg[!(pkg %in% installed.packages()[, "Package"])]
if (length(new.pkg))
install.packages(new.pkg, dependencies = TRUE)
sapply(pkg, require, character.only = TRUE)
}
packages <- c('devtools', 'readxl',
'shiny', 'DT')
ipak(packages)
## ui
##---------------------------------------------------------------
ui <- fluidPage(
fluidRow(
column(9, h2('Import Excel'), align='center')
),
sidebarLayout(
sidebarPanel(
#----------------------Upload Files-----------------
conditionalPanel(
condition= " input.tabs == 'Upload_Files' ",
fileInput('file', 'Choose Excel file',
accept = c(".xlsx")
)
)
),
#------------------------------Main Panel------------------------
mainPanel(
tabsetPanel(
id = 'tabs',
tabPanel('Upload_Files',
fluidRow (
column(12, DT::dataTableOutput('data.table1') )
)
)
)
)
)
)
##--------------------server-----------------------
server <- function(input, output, session) {
df_all = data.frame()
output$data.table1 <- DT::renderDataTable({
# input$file will be NULL initially.
req(input$file)
inFile <- input$file
if(is.null(inFile)) {
return(NULL)
}
df=read_excel(inFile$datapath)
df_all = bind_rows(df_all, df)
return(df_all)
})
}
runApp(shinyApp(ui=ui, server=server))