将数据动态加载到 rmarkdown html 输出

Dynamically load data into rmarkdown html output

有没有办法在打开 html 输出?

例如,我有这个简单的 Rmarkdown 文件,它生成一个图(在 svg 中)和一个 table:

---
title: "test"
output: 
    html_document:
        self_contained: false
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(dev = "svglite", fig.ext = ".svg")
library(svglite)
library(DT)
```

```{r, echo=FALSE}
DATA <- data.frame(a = 1:5, b = 6:10)
plot(DATA)
datatable(DATA)
```

有没有办法将数据提供给 html 文件,这样当数据发生变化并且我再次打开它时,绘图和 table 会自动更新 而无需 必须渲染 Rmarkdown 脚本?

是的,这是可能的。您可以使用本地数据或存储在某处的数据——例如 Google 表格。

步骤 1) 将 runtime: shiny 添加到您的 YAML。这并没有使它“闪亮”,但确实使它充满活力。

更新 YAML:

---
title: "test"
output: 
    html_document:
        self_contained: false
runtime: shiny
---

步骤 2) 使用函数调用您的数据。

```{r giveMe,echo=F}

giveMeData <- function(){
  read.csv("./../_data/carData.csv")
}

dataGiven <- giveMeData()
```

无论是在 RStudio 的查看器窗格中还是在您的浏览器中,您只需要在更新数据后刷新视图或页面。

为了测试这个,我使用的唯一其他代码如下:

<!--- inline R code to show the data --->

The column names are `r names(dataGiven)`.
There are `r nrow(dataGiven)` observations in this data.


```{r itsGiven, echo=FALSE}
# plot the data
plot(dataGiven)
datatable(dataGiven)
```

我把列名改成了“Displacement”并刷新了(没有重新运行,运行,knit,只是刷新)