如何在 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))
我是 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))