RMarkdown网站:为几个Rmd文件提供数据框?

时间:2017-05-20 20:16:39

标签: r r-markdown

我确信这应该在某个地方得到解答,但我找不到它......

我正在尝试开发一个由rmarkdown::render_site()函数呈现的网站,我无法在构成网站的Rmd文件之间“共享”加载的数据帧。

我的档案:

_site.yml:

name: "my-website"
navbar:
  title: "My Website"
  left:
    - text: "Home"
      href: index.html
    - text: "About"
      href: about.html

index.Rmd:

---
title: "My Website"
---
Hello, Website!

```{r}
library(data.table)
d <- copy(mtcars)
summary(d)
```

about.Rmd:

---
title: "About This Website"
---
More about this website.
```{r}
summary(d)
```

并通过以下方式呈现网站:

rmarkdown::render_site()

将以下错误作为输出:

|......................                                           |  33%
ordinary text without R code
|...........................................                      |  67%
label: unnamed-chunk-1
Error in summary(d) : object 'd' not found

很明显,渲染过程中对象d对about.Rmd文件不可用... 关于如何解决这个问题的任何想法? 提前谢谢!

3 个答案:

答案 0 :(得分:0)

尝试将其添加到第一页的块中

```{r,cache=TRUE} 
library(data.table)
d <- copy(mtcars)
summary(d)
```

这应该在你的html文件夹中创建一个缓存文件夹,并在同一个rMarkdown文档中将数据从chunk变为chunk。它允许您调用块中的数据,并在整个降价体中使用内联r语句。

答案 1 :(得分:0)

你可以把

library(data.table)
d <- copy(mtcars)

global.R文件中,并在需要source()时使用d函数。

答案 2 :(得分:0)

@COLO 在评论中写道

<块引用>

“事实上,我应该放在 global 中的脚本有很多行,数据处理一个大数据帧,所以我不想像我拥有的​​ Rmd 文件一样处理它。”

您可以使用 saveRDS 将数据处理的输出保存到 RDS 文件中。然后在所有其他笔记本中使用

阅读
df <- readRDS("prepared_data.rds")

help(readRDS)

为分析准备好数据后,读取 RDS 文件往往比读取 CSV 文件或等待数据库查询快得多。