Я пытаюсь написать свое первое приложение Shiny, которое читает файл PDF, извлекает таблицы и сохраняет его в документе Excel.
Мне не удается создать подходящий код.Пока у меня есть: 1) Для пользовательского интерфейса
shinyUI(fluidPage(
titlePanel("CMM Report"),
sidebarPanel(
fileInput("file", "Upload Report")
),
downloadButton("dl", "Download")
))
2) Для сервера
library(shiny)
library (tabulizer)
library(writexl)
shinyServer(function(input, output) {
data <- reactive({
file1 <- input$file
if(is.null(file1)){return()}
file1 <- ExtractTable (file1)
})
## Download
output$dl <- downloadHandler(
filename = function() { "ae.xlsx"},
content = function(file) {write_xlsx(data, path = file)}
)
})
Я не уверен, нужно ли мне поместить код для извлечения таблицы в функцию и гдечтобы вызвать функцию, чтобы она работала.Любая помощь ДЕЙСТВИТЕЛЬНО приветствуется.
Файл данных примера взят из отчета <- "<a href="http://www.stat.ufl.edu/~athienit/Tables/Ztable.pdf" rel="nofollow noreferrer">http://www.stat.ufl.edu/~athienit/Tables/Ztable.pdf"
Функция для извлечения данных
ExtractTable <- function (report){
lst <- extract_tables(report, encoding="UTF-8")
# Delete blank columns
lst[[1]] <- lst[[1]][, -3]
lst[[2]] <- lst[[2]][, -4]
# Bind the list elements
table <- do.call(rbind, lst)
table <- as.data.frame(table[c(2:37, 40:nrow(table)), ],
stringsAsFactors=FALSE) # ...w/o obsolete rows
# Take over colnames, cache rownames to vector
colnames(table) <- table[1, ]
rn <- table[2:71, 1]
table <- table[-1,-1] # and bounce them out of the table
# Coerce to numeric
table <- as.data.frame(apply(table[1:70,1:10], 2,
function(x) as.numeric(as.character(x))))
rownames(table) <- rn
return(table)
}