在闪亮的应用程序中调用Rmakdown文档

时间:2015-10-28 20:14:18

标签: r shiny r-markdown

我有一个test.Rmd文件,其中包含以下YAML内容以及其他一些代码块和语句:

---
title: "Rmarkdown test"
runtime: shiny
output: html_document
params:
     product: "abc"
     type: "xyz"
---

我想从一个Shiny应用程序中调用它,并嵌入渲染此test.Rmd文件在闪亮输出中的结果

如何从server.R中调用它?我尝试了output$text<-render::rmarkdown('test.Rmd),错误为Error in .subset2(x, "impl")$defineOutput(name, value, label) : Unexpected character output for text但我发现它在ui.R和server.R所在的同一位置生成了test.html文件。

我测试的ui.R条目为htmlOutput("text"),错误与上述相同。

调用.Rmd文件并在闪亮的输出窗口中生成输出的正确方法是什么,同时调用.Rmd如何覆盖参数?有什么帮助吗?

2 个答案:

答案 0 :(得分:1)

解决方案1:

首先:使用以下方式渲染你的rmarkdown:

rmarkdown::render()

第二:使用以下方法调用生成的html文件:

includeScript()

解决方案2:

HTML(markdownToHTML(text = "_Hello_, \*\*World\*\*!"))

解决方案3:

这是我将Sever和ui分开的另一种方式,并添加了一些奇特的修改:

<强> Sever的:

// generate your report using test.Rmd
generateReport <- function() {
  out.markdown <- ''
  withProgress(message = 'Generating Report',
               value = 0, {
                 out.markdown <- rmarkdown::render(
                   input = "test.Rmd",
                   output_format = "html_document")

                 setProgress(1)
               })

  read_file(out.markdown)
}

// load generateReport function and
// renderText helps function be called whenever it is needed
shinyServer(function(input, output, session) {

  output$report <- renderText({ HTML(generateReport()) })


// Your rest of code

}

<强> ui.R

// load report in ui
shinyUI(fluidPage(
  titlePanel("MY Summary"),

  sidebarLayout(
     mainPanel(htmlOutput("report"))
  )
))

答案 1 :(得分:0)

我做了两个步骤:1)将Rmd渲染为一个名为background.HTML的HTML文件,并将其存储到包含Shiny app.R的目录中,以及2)includeHTML将渲染的HTML加载到{{ 1}}。这是第1部分:

tabPanel

这是我放入Shiny应用程序的UI部分的第2部分:

---
title: "Background Info"
date: "November 24, 2019"
output:
  html_document:
    theme: cerulean
    toc: no
---
<style>
.main-container {
    max-width: 940px;
    margin-left: 0;
    margin-right: auto;
}
</style>

Then here I put my text that I wanted in the `tabPanel` of the Shiny app