我有一个未清洗的数据集。因此,我将其导入到我的R studio中。然后,在rmarkdown文件中运行
nrow(adult)
并按下ctrl+Enter
时,它可以正常工作,但是当我按下knit
时,会出现以下错误:'
当你使用knit
时,它会在一个新的环境中执行。目前,对象adult
在你的环境中,但并不在knit
创建的新环境中。
你可能没有包含代码来读取或加载adult
到knit
中。
如果根据@sebastian-c的评论清除你的工作区,你会发现即使是ctrl+enter
也无法工作。
你必须在你的knit
中创建adult
对象。例如,如果你的数据来自csv文件,则需要添加:
adult <- read.csv2('Path/to/file')
在第一块中。
希望这已经足够清楚了。
?read.csv2
以获取其选项 - GGamba另一个选项,与之前的方式相同,但在您有大量不同数据的情况下非常有用。
一旦您从R脚本生成了所有数据,请在您的“正常代码”(任何一个R脚本)中编写:
save.image (file = "my_work_space.RData")
然后,在您的R-Markdown脚本中,加载预先保存的数据图像和所需的库。
```{r , include=FALSE}
load("my_work_space.RData")
library (tidyverse)
library (skimr)
library(incidence)
```
注意:在运行knitr之前,请确保保存您的数据并进行任何修改。
通常情况下,我会有很多代码来准备数据变量以在knitr文档中有效使用,我的解决方法需要分成两步:
虽然不太优雅,但这是我找到的唯一解决办法。
我也尝试过使用get()语句访问全局环境变量,但没有成功。
如果你添加了eval = FALSE
,之前创建对象的R代码不会被执行。
因此,当你在不同的分块中再次使用该对象时,它将失败并显示未找到对象的消息。
将内容编织成PDF格式时
```{r setup}
knitr::opts_chunk$set(cache =TRUE)
```
运行良好。
但是在与Word集成时出现问题。
我正在使用Word进行渲染。这是最终使我的数据从默认文档目录加载的方法。我将此放在第一块的第一行中。
load("~/filename.RData")
rm(list = ls())
清理你的工作空间,然后再运行你的脚本。你可能没有在脚本中正确读取文件。 - sebastian-cCtrl+Enter
运行它呢? - Jeffctrl+enter
运行它吗?当 knitr 运行时,它会在一个干净的环境中运行。也就是说,它会忽略您工作区中的所有内容,并创建自己的新环境。 - sebastian-c