编织错误。对象未找到。

14
我有一个未清洗的数据集。因此,我将其导入到我的R studio中。然后,在rmarkdown文件中运行nrow(adult)并按下ctrl+Enter时,它可以正常工作,但是当我按下knit时,会出现以下错误:'

enter image description here


1
尝试使用 rm(list = ls()) 清理你的工作空间,然后再运行你的脚本。你可能没有在脚本中正确读取文件。 - sebastian-c
但是为什么我可以用 Ctrl+Enter 运行它呢? - Jeff
如果您首先清除环境并仅运行脚本中未被注释的行,那么您可以使用 ctrl+enter 运行它吗?当 knitr 运行时,它会在一个干净的环境中运行。也就是说,它会忽略您工作区中的所有内容,并创建自己的新环境。 - sebastian-c
6个回答

16

当你使用knit时,它会在一个新的环境中执行。目前,对象adult在你的环境中,但并不在knit创建的新环境中。

你可能没有包含代码来读取或加载adultknit中。

如果根据@sebastian-c的评论清除你的工作区,你会发现即使是ctrl+enter也无法工作。

你必须在你的knit中创建adult对象。例如,如果你的数据来自csv文件,则需要添加:

adult <- read.csv2('Path/to/file')

在第一块中。

希望这已经足够清楚了。


1
我执行了 文件 -> 导入数据集 -> 从CSV 操作,现在我在全局环境窗口中有了这个"adult" 数据集。但是如何将它添加到我的 Knit 环境中呢? - Jeff
adult <- read.csv2('path/to/file') 读取 ?read.csv2 以获取其选项 - GGamba

6

另一个选项,与之前的方式相同,但在您有大量不同数据的情况下非常有用。

一旦您从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之前,请确保保存您的数据并进行任何修改。


4

通常情况下,我会有很多代码来准备数据变量以在knitr文档中有效使用,我的解决方法需要分成两步:

  1. 在全局环境中,我使用save()将所有对象保存到文件中。
  2. 在knitr代码中,我使用load()从文件中加载对象。

虽然不太优雅,但这是我找到的唯一解决办法。

我也尝试过使用get()语句访问全局环境变量,但没有成功。


4

如果你添加了eval = FALSE,之前创建对象的R代码不会被执行。

因此,当你在不同的分块中再次使用该对象时,它将失败并显示未找到对象的消息。


0

将内容编织成PDF格式时

```{r setup}
knitr::opts_chunk$set(cache =TRUE)
```

运行良好。

但是在与Word集成时出现问题。


0

我正在使用Word进行渲染。这是最终使我的数据从默认文档目录加载的方法。我将此放在第一块的第一行中。

load("~/filename.RData")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接