这里是我想最终存储在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
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 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")