首页 > 解决方案 > 每次我将它编织成pdf时,如何避免rmd文件执行整个R脚本?

问题描述

这是问题:

file.r 中,我基于一个庞大的数据集进行了广泛的分析。每次我打开文件时,我只需要加载库,一切都准备好了。我不再需要下载我需要的任何数据集输入。

现在我已经创建了一个 RMD file.rmd与 file.r 相同的代码展示它的发现。我正在尝试预览 pdf 的外观。问题是当我点击“Knit to pdf”时,它会再次开始下载所有的包和数据集。我必须等待几个小时才能看到代码中微小更改的效果。

还有更多:在 R 文件中创建的某些对象根本无法在 rmd 文件中工作。

例如:在 R 文件中我编码: edx2 <- edx2 %>% mutate(timeRr = yearRating - release)

当我尝试在 rmd 文件中运行相同的代码时,我收到消息: Func(x[[i]],...) 中的错误:找不到对象 'timeRr' 调用:f -> scales_add_defaults -> lapply -> fun 两个文件中加载的相同库(r 和 rmd)

我究竟做错了什么?

标签: rr-markdownmarkdownknitr

解决方案


1) 在数据分析(file.R)结束时,将 Notebook 所需的数据保存在 .RDS 文件中。

例如,如果您生成 3 个结果:res1、res2 和 res3

results <- list(res1 = res1, res2 = res2, res3 = res3)
saveRDS(file = 'results.RDS', results)

2)而不是采购分析脚本,只需阅读笔记本(.Rmd)中的结果

data <- readRDS('results.RDS')
# Results available for further use in the Notebook
data$res1
data$res2
data$res3

您使用 edx2 得到的错误可能是由于在生成笔记本期间打开了一个新会话:您确定 file.R 真的生成 edx2,还是仅在您当前的会话中可用?


推荐阅读