在 Shiny 中下载文本并生成 txt 文件

Posted

技术标签:

【中文标题】在 Shiny 中下载文本并生成 txt 文件【英文标题】:Download text and generate txt file in Shiny 【发布时间】:2017-12-27 16:22:54 【问题描述】:

我正在寻找一种通过生成 .txt 文件来下载应用程序上显示的文本的方法。这是我的尝试,不幸的是没有成功:

library(shiny)

ui <- fluidPage(

    sidebarPanel(
      h4("Title"),
      p("Subtitle",
        br(),"Line1",
        br(),"Line2",
        br(),"Line3"),

      downloadButton("Download Metadata", label = "Download")
    )
  )

server <- function(input, output, session)

    output$downlaodData <- downloadHandler(
      filename = function()
        paste("data-", Sys.Date(), ".txt", sep = "")
      ,
      content = function(file) 
        write.txt(data, file)
      
    )

感谢您的帮助

【问题讨论】:

【参考方案1】:

您不能像这样编写显示在您的页面上的文本。您可以下载存储为数据或用户输入的文本。您的代码中也存在一些问题:

数据未定义,因此您未指定应下载的内容 write.txt 不是函数,请改用 write.table downloadbutton 和 downloadHandler 应该有相同的 id。

工作示例

library(shiny)

text=c("Line1", "Line2","Line3")

ui <- fluidPage(

  sidebarPanel(
    h4("Title"),
    p("Subtitle",
      br(),text[1],
      br(),text[2],
      br(),text[3]),

    downloadButton("download_button", label = "Download")
  )
)

server <- function(input, output, session)

  output$download_button <- downloadHandler(
    filename = function()
      paste("data-", Sys.Date(), ".txt", sep = "")
    ,
    content = function(file) 
      writeLines(paste(text, collapse = ", "), file)
      # write.table(paste(text,collapse=", "), file,col.names=FALSE)
    
  )


shinyApp(ui,server)

【讨论】:

这个方法的问题是它会输出引号和任何转义;也就是说,它将文本逐字写入文件。假设 R 有一个字符串test &lt;- "this is a \"test\""。使用此方法可以保留前面和结尾的引号以及转义符。有没有办法不这样做? 啊。将write.table(paste(text,collapse=", "), file,col.names=FALSE) 替换为writeLines(paste(text, collapse = ", "), file) @MarkWhite 我认为writeLines 是一个更好的解决方案,感谢您的反馈。我已经相应地更新了答案。

以上是关于在 Shiny 中下载文本并生成 txt 文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在GWT中下载文档时在新选项卡上显示消息

在 WKWebView swift 中下载文档并加载图像(png、jpeg)、pdf、doc 等

r 在Shiny中下载文件功能

Shiny App - 从上传的 CSV 生成和下载 PPTX 幻灯片

shiny 生成的页面可以脱离R使用吗?

从 R Shiny App 输出纯 HTML 文件