[英]How to render table and math in Rmarkdown when called from Shiny App
我有一個Rmarkdown文件( info.rmd
),看起來像這樣:
---
title: "Information"
theme: yeti
date: "4/1/2017"
output: html_document
---
## R Markdown
This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see <http://rmarkdown.rstudio.com>.
```{r echo = FALSE, results = 'asis'}
library(knitr)
kable(mtcars[1:5, ], caption = "A knitr kable.")
```
## Formulation
Here is where we formulate
$$\sum_{i=1}^n X_i$$
像這樣調用Rmarkdown的ShinyApp:
服務器
包含這個
output$markdown <- renderUI({
HTML(markdown::markdownToHTML(knit('info.rmd', quiet = TRUE), fragment.only=TRUE))
})
用戶界面
包含以下內容:
fluidPage(uiOutput('markdown'))
但是,如何生成表格和數學運算呢?
什么是正確的方法?
在Shiny之外獨立運行時, info.rmd
會正確生成表:
我在ui.R
嘗試過
includeHTML("info.html")
這可以正確顯示html文件,但會阻止其他tabPanel()
的繪圖和反應性正常工作。
更新資料
這是@Nice解決方案之后的新結果:
如果您使用fragment.only
,則不包括CSS和JS,並且表/等式沒有樣式。
一種簡單的方法是在iframe中包含帶有標頭的完整HTML,以免干擾應用程序的其余部分。
output$markdown <- renderUI({
tags$iframe(src='info.html',width="100%",frameBorder="0",height="1000px")
})
info.html
文件必須位於您應用程序的www
文件夾中。 您可以通過更改tags$iframe
的參數來調整iframe的寬度和高度。
您可以使用CSS在iframe中更改主容器的寬度。 如果將此添加到info.rmd文件中:
```{r results="asis",echo = FALSE}
cat("
<style>
.main-container.container-fluid {
max-width: 100%;
padding-left:0px;
}
</style>
")
```
使用以下內容編輯閃亮的服務器部分應該會有所幫助:
output$markdown <- renderUI({
markdown::markdownToHTML(knit('info.rmd', quiet = TRUE), fragment.only=TRUE)
withMathJax(includeHTML("info.html"))
})
另外,您還可以執行以下操作:
output$markdown <- renderUI({
markdown::markdownToHTML(knit('info.rmd', quiet = TRUE), fragment.only=TRUE)
withMathJax(includeMarkdown("info.md"))
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.