我正在开发一个应用程序,有助于按主题/主题组织和可视化许多PDF文档。我可以上传和阅读单个PDF,但我很难阅读多个PDF文档。
对于单个PDF文档:
ui.R
---
fileInput('file1', 'Choose PDF File', accept=c('.pdf'))
---
server.R
--------
library(pdftools)
-------
mypdf<-reactive({
inFile <- input$file1
if (is.null(inFile)){
return(NULL)
}else{
pdf_text(inFile$datapath)
}
})
要上传多个PDF文件,我必须在代码的ui.R部分使用multiple = TRUE,但如何读取所有上传的文件?
答案 0 :(得分:3)
上传的文件可以在这样的for循环中读取
for(i in 1:length(input$files[,1])){
lst[[i]] <- read.csv(input$files[[i, 'datapath']])
}
这是CSV文件的示例,但您可以对pdf文件执行相同的操作。
答案 1 :(得分:0)
我意识到这个问题比较老,但是我一直在寻找相同的答案,并构建了一个最小的应用程序来测试功能。当然,该问题已得到完全解决,但它可以正常工作,但是与往常一样,可重现的代码可以帮助我们所有人节省时间,所以我决定共享我的最小测试应用程序。
write.csv2(
x = "diff same",
file = "test.csv"
)
write.csv2(
x = "diffhere same",
file = "test2.csv"
)
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
fileInput(
inputId = "files",
label = "Choose CSV File",
multiple = TRUE,
accept = c("text/csv",
"text/comma-separated-values,text/plain",
".csv")
)
),
mainPanel(
tableOutput("contents")
)
)
)
server <- function(input, output) {
output$contents <- renderTable({
req(input$files)
upload = list()
for(nr in 1:length(input$files[, 1])){
upload[[nr]] <- read.csv(
file = input$files[[nr, 'datapath']]
)
}
return(upload)
})
}
shinyApp(ui, server)