javascript - 从 Shiny App 调用时如何在 Rmarkdown 中呈现表格和数学

标签 javascript html r shiny markdown

我有一个如下所示的 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:

server.R

包含这个

  output$markdown <- renderUI({
    HTML(markdown::markdownToHTML(knit('info.rmd', quiet = TRUE), fragment.only=TRUE))
  })

ui.R

包含这个:

 fluidPage(uiOutput('markdown'))

但是生成的表格和数学怎么看起来像这样呢?

enter image description here

正确的做法是什么?


当在 Shiny 之外独立运行时,info.rmd 会正确生成表格:

enter image description here


我在 ui.R 中试过这个

 includeHTML("info.html")

正确显示文件 html,但阻止绘图 和其他 tabPanel() 中的 react 性以工作。


更新

这是@Nice 解决后的新结果:

enter image description here

最佳答案

如果您使用 fragment.only,则不包含 CSS 和 JS,并且表格/方程式没有样式。

一种简单的方法是在 iframe 中包含带有 header 的完整 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>
")
```

关于javascript - 从 Shiny App 调用时如何在 Rmarkdown 中呈现表格和数学,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43158408/

相关文章:

javascript - 在node.js中将字符串解析为数组

javascript - jQuery 滚动到可滚动 div 中元素的顶部卡住循环

asp.net - OnClick 与 OnClientClick 的 asp :CheckBox?

html - 自定义文本区域的文本对齐方式

r - 如何使用固定位置控制 igraph 绘图布局?

javascript - 根据单击哪个按钮在javascript中保存全局变量

javascript - 如果显示 n/a 值则隐藏 DIV

javascript - 缩放以适合, Canvas ,javascript

R:如何将 xts 对象转换为数值矩阵?

r - 通过 R markdown 和 knit 加载并打印新页面中的每个表格