如何在 R Markdown 中显示 R Shiny 输出?

How to display R Shiny output in R Markdown?

我是 R markdown 的新手,我正在尝试创建一个 R Shiny 应用程序,我可以在其中输入名称列表,然后将输出(如名称列表)下载为 HTML 文件.我正在使用 R markdown 创建 HTML 文件。这是我的示例代码:

R 闪亮:

library(shiny)

ui <- list(
  textInput("name", "Type new text input name", value = ""),
  actionButton("btn", "click me to create text input"),
  uiOutput("newInputs"),
  downloadButton("download_report", "Download")
)

server <- function(input, output)
{
  family_member <- reactiveValues(
    add_family_info = list()
  )

  observeEvent(input$btn, {

    newid <- paste(length(family_member$add_family_info))

    family_member$add_family_info <- c(family_member$add_family_info, list(c(newid, input$name)))

    family_member

  })

  output$newInputs <- renderUI({ 
    lapply(family_member$add_family_info, function(a)
      c(paste(a[2])))

  })

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

      params <- list(report = uiOutput("newInputs"))

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

}

runApp(list(ui = ui, server = server))

R 降价:

---
runtime: shiny
output: html_document
params:
  report: NA

---
\
\

# Member names

`r params$report`

感谢任何帮助!提前致谢!!!

如果您只是使用 Shiny 来呈现 Rmarkdown 文档,则不需要 运行文档的时间是 Shiny。只有当文档本身最终将成为一个闪亮的应用程序时才需要这样做。

查看下载处理程序

params <- list(report = uiOutput("newInputs"))

uiOutput 函数为元素生成 html。它不检索值(如果您 运行 在控制台中单独执行它,您可以看到这一点)。另外 newInputs 只是指文本的容器(它实际上不是输入)。相反,您可能希望使用存储列表的反应值

params <- list(report = family_member$add_family_info)

但是,由于这将被打印,因此它不能是任意的 R 对象。它必须是 cat 可以处理的东西。在这种情况下 family_member$add_family_info 是列表的列表。尝试用

之类的东西将其展平
params <- list(report = unlist(family_member$add_family_info))