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

Max*_*ank 5 r shiny shiny-server shinydashboard

我正在寻找一种通过生成 .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)
      }
    )
Run Code Online (Sandbox Code Playgroud)

感谢您的帮助

Flo*_*ian 5

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

  • 数据未定义,因此您没有指定应下载的内容
  • 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)
Run Code Online (Sandbox Code Playgroud)

  • @MarkWhite我认为“writeLines”是一个更好的解决方案,感谢您的反馈。我已相应更新了答案。 (2认同)