#r #shiny #r-markdown
#r #блестящий #r-markdown
Вопрос:
Я хочу сгенерировать отчет в формате PDF из моего приложения shiny на сервере shiny. Он хорошо работает на моем компьютере. Я пытаюсь подключиться к своему серверу shiny, но когда я хочу сгенерировать отчет, я получаю страницу Firefox «файл не найден» вместо получения PDF.
Я использую код, показанный на:https://shiny.rstudio.com/articles/generating-reports.html Я также пытаюсь напрямую использовать свой файл .Rmd вместо копирования / вставки его во временный каталог, но я получил ту же ошибку.
Мой серверный файл :
output$pdfGen <- downloadHandler(
# For PDF output, change this to "report.pdf"
filename = "rapport_preci.pdf",
content = function(file) {
withProgress(message = "Génération du pdf en cours", value = 0,{
src <- normalizePath('report.Rmd')
# temporarily switch to the temp dir, in case you do not have write
# permission to the current working directory
owd <- setwd(tempdir())
on.exit(setwd(owd))
file.copy(src, 'report.Rmd', overwrite = TRUE)
# Set up parameters to pass to Rmd document
params <- list(varSite = input$pdfSite,
...
varTrans= input$valTrans1
)
# Knit the document, passing in the `params` list, and eval it in a
# child of the global environment (this isolates the code in the document
# from the code in this app).
out <- render("report.Rmd", output_file = file,
params = params,
encoding = "UTF-8"
)
file.rename(out, file)
})
}
)
Я думаю, что мое приложение не нашло мой файл .Rmd, но как мне это исправить? Все мои файлы находятся в одной папке.
Ответ №1:
Я просто запускаю часть кода, и, по-видимому, проблема в том, когда вы устанавливаете owd <- setwd(tempdir())
Вот что это делает:
> tempdir()
[1] "/tmp/RtmpKafhlt"
> owd = setwd(tempdir())
> owd
[1] "/home/med"
и у вас, вероятно, нет доступа к домашней директории хост-сервера. Вам нужно установить replace on.exit(setwd(owd))
с on.exit(owd)
Комментарии:
1. или укажите параметры
from =
,to =
2. @A.Тибо, пожалуйста, ознакомьтесь с измененным ответом.
3. Я пытаюсь « tempReport <- file.path(tempdir(), «report.Rmd») file.copy(«report.Rmd», tempReport, перезаписать = TRUE) « и: « owd <- tempdir () on.exit (owd) file.copy (from = ‘report.Rmd’, to = src, перезаписать = TRUE) « и я все еще получаю ту же ошибку
4. Это то, что вам нужно попробовать: во-первых,
tempReport <- file.path(tempdir(), "report.Rmd")
и строкаfile.copy(src, tempReport, overwrite = TRUE)
5. Все та же ошибка… Я также пытаюсь
file.copy(from = "report.Rmd", to = tempReport, overwrite = TRUE)
вместоfile.copy(src, tempReport, overwrite = TRUE)
. Похоже, что он не может найти мой файл .Rmd или может скопировать / вставить его…