簡體   English   中英

從Shiny App調用時如何在Rmarkdown中呈現表格和數學

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM