如何解决 R Markdown(Knit)“'closure' 不可子集化”?
How to solve R Markdown (Knit) "'closure' is not subsettable"?
我第一次尝试使用 RMarkdown (Knit) 来制作 pdf。默认文件(文件 > 新文件 > R Markdown)运行良好,它在编译时显示生成的 pdf。例如,下面的代码运行,
```{r cars}
summary(cars)
```
但是,如果我只是用 "myData," 换车,它不会编译并显示
Error in object[[i]] : object of type 'closure' is not subsettable
Calls: <Anonymous> ... withVisible -> eval -> eval -> summary -> summary.default
Execution halted
我在全局环境中加载了 "myData",并且可以在原始 R 脚本中执行其他操作。有人可以提供一些指导吗?非常感谢您的宝贵时间。
运行 一个 Rmarkdown 文件启动一个新的 R 会话。
在新会话中,您可以加载存储在 data
包中的 data.frames,但必须从 Rmarkdown 文档中加载其他数据集。
要让 myData 显示在您的 Rmarkdown 文档中,
- 在当前 R 会话中使用
save
将文件保存在某处
- 然后在你的Rmarkdown文档中,使用
load
打开数据集
因此,在您当前的 R 会话中:
save(myData, file="<path>/myData.Rdata")
并在您的 Rmarkdown 文件中:
```{r myDataSummary}
load("<path>/myData.Rdata")
summary(myData)
```
如果您的数据存储为文本文件,并且您不想存储单独的 .R 文件,请直接在 Rmarkdown 文件中使用 read.csv
或朋友。
```{r myDataSummary}
myData <- read.csv("<path>/myCSV.csv")
summary(myData)
```
这是当您尝试子集化(= 通过 x[i]
)函数 时出现的错误。由于此错误是由您的代码中的 summary(cars)
引起的,因此我们可以推测 cars
对象引用了编织文档范围内的函数。
您可能忘记加载数据,或者您在当前作用域中定义了同名函数。
正如@Imo 所解释的,基本问题是新会话。所以,答案是在 rMarkdown 中添加脚本。但是,它会造成更多的问题。以下是我处理其中一些的方式,
```{r global_options, include=FALSE}
source(file = "C:\Path\to\my\file.R")
knitr::opts_chunk$set(fig.width=12, fig.height=8, fig.path='Figs/',
echo=FALSE, warning=FALSE, message=FALSE)
```
我第一次尝试使用 RMarkdown (Knit) 来制作 pdf。默认文件(文件 > 新文件 > R Markdown)运行良好,它在编译时显示生成的 pdf。例如,下面的代码运行,
```{r cars}
summary(cars)
```
但是,如果我只是用 "myData," 换车,它不会编译并显示
Error in object[[i]] : object of type 'closure' is not subsettable
Calls: <Anonymous> ... withVisible -> eval -> eval -> summary -> summary.default
Execution halted
我在全局环境中加载了 "myData",并且可以在原始 R 脚本中执行其他操作。有人可以提供一些指导吗?非常感谢您的宝贵时间。
运行 一个 Rmarkdown 文件启动一个新的 R 会话。
在新会话中,您可以加载存储在 data
包中的 data.frames,但必须从 Rmarkdown 文档中加载其他数据集。
要让 myData 显示在您的 Rmarkdown 文档中,
- 在当前 R 会话中使用
save
将文件保存在某处 - 然后在你的Rmarkdown文档中,使用
load
打开数据集
因此,在您当前的 R 会话中:
save(myData, file="<path>/myData.Rdata")
并在您的 Rmarkdown 文件中:
```{r myDataSummary}
load("<path>/myData.Rdata")
summary(myData)
```
如果您的数据存储为文本文件,并且您不想存储单独的 .R 文件,请直接在 Rmarkdown 文件中使用 read.csv
或朋友。
```{r myDataSummary}
myData <- read.csv("<path>/myCSV.csv")
summary(myData)
```
这是当您尝试子集化(= 通过 x[i]
)函数 时出现的错误。由于此错误是由您的代码中的 summary(cars)
引起的,因此我们可以推测 cars
对象引用了编织文档范围内的函数。
您可能忘记加载数据,或者您在当前作用域中定义了同名函数。
正如@Imo 所解释的,基本问题是新会话。所以,答案是在 rMarkdown 中添加脚本。但是,它会造成更多的问题。以下是我处理其中一些的方式,
```{r global_options, include=FALSE}
source(file = "C:\Path\to\my\file.R")
knitr::opts_chunk$set(fig.width=12, fig.height=8, fig.path='Figs/',
echo=FALSE, warning=FALSE, message=FALSE)
```