簡體   English   中英

如何解決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文檔中,

  1. 將文件save到當前R會話中的某個位置
  2. 然后在Rmarkdown文檔中,使用load打開數據集

因此,在您當前的R會話中:

save(myData, file="<path>/myData.Rdata")

並在您的Rmarkdown文件中:

```{r myDataSummary}
load("<path>/myData.Rdata")
summary(myData)
```

如果您的數據存儲為文本文件,並且您不想存儲單獨的.R文件,請直接在Rmarkdown文件中使用read.csv或friend。

```{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)
```

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM