我有一个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如何覆盖参数?有什么帮助吗?
答案 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