如何将ShinyApp html转换为PDF或其他格式

问题描述 投票:0回答:1

这里是我想最终存储在PDF中的代码示例。

library(shiny)
library(arsenal)
library(knitr)
library(survival)

#创建具有列和标识符的随机数据集 对于样品

random <- data.frame(replicate(10,sample(5:100, 10)))

samples <- data.frame(replicate(10,sample(0:1, 1)))

randomdf <- merge(samples,random, by= "row.names")
rm(random, samples)

我删除了具有行名的列以获得表的更好示例

randomdf$Row.names <- NULL

使用Shiny创建表

shinyApp(
  ui = fluidPage(tableOutput("table")), # creating a page with fluidpage
  server = function(input, output) {
    output$table <- renderTable({
      as.data.frame(summary(tableby(randomdf$replicate.10..sample.0.1..1..~., 
                                    data = randomdf, 
                                    numeric.stats=c("medianq1q3"), 
                                    numeric.test="kwt"), 
                            text = "html",
                            digits = 2))
    },striped=TRUE, sanitize.text.function = function(x) x)

  }
)

我已经找到了下面的代码,该代码应该生成PDF,但是我不确定如何用先前的代码实现它。

shinyApp(
        ui <- fluidPage(tableOutput("table"),
                 downloadButton("report","Generate report")), 

  server <-function(input, output) {
    rendertable to indicate that
    inputs change

    output$table <- renderTable({
     as.data.frame(summary(tableby(randomdf$replicate.10..sample.0.1..1..~., 
                                    data = randomdf, 
                                    numeric.stats=c("medianq1q3"), 
                                    numeric.test="kwt"), 
                            text = "html",
                            digits = 2))
    },striped=TRUE, sanitize.text.function = function(x) x)

#这是我现在添加新代码的位置

 output$report <- downloadHandler(
      filename = "report.pdf",
      content = function(file) {
        tempReport <- file.path(tempdir(), "report.Rmd")
        file.copy("report.Rmd", tempReport, overwrite = TRUE)

        params = list(n= input$table)

        rmarkdown::render(tempReport, output_file = file,
                          params = params,
                          envir = new.env(parent = globalenv()))
      }
    )
  }
)

我现在在我的html中确实有“生成报告”按钮,但是由于以下错误,我无法生成报告:

警告normalizePath(path,winslash = winslash,mustWork = mustWork): 路径[1] =“ / var / folders / 4g / ld58jxf94s74vrcf_1gd07bh0000gn / T // RtmphCZeLD / report.Rmd”: 没有这样的文件或目录警告:abs_path中的错误:该文件 '/var/folders/4g/ld58jxf94s74vrcf_1gd07bh0000gn/T//RtmphCZeLD/report.Rmd' 不存在。 [没有可用的堆栈跟踪]

r shiny pdf-generation
1个回答
0
投票

我改用R Markdown可以完美满足我的需要

table_one <- tableby(Sample ~., data = Random, 
                     numeric.stats=c("medianq1q3"), 
                     numeric.test="kwt", 
                     digits = 2,
                     digits.p= 2)

summary(sort(table_one, increasing = TRUE), text=TRUE, title = "test")
© www.soinside.com 2019 - 2024. All rights reserved.