如何解决R Markdown(Knit)“'封闭'不是子集”?

时间:2016-06-21 11:58:58

标签: r knitr r-markdown

我试图首次使用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脚本中执行其他操作。有人可以提供一些指导。非常感谢您的宝贵时间。

3 个答案:

答案 0 :(得分:4)

运行Rmarkdown文件会启动一个新的R会话。

在新会话中,您可以加载存储在data包中的data.frames,但必须从Rmarkdown文档中加载其他数据集。

要让myData显示在您的Rmarkdown文档中,

  1. 将文件保存在当前R会话中save的某处
  2. 然后在您的Rmarkdown文档中,使用load打开数据集
  3. 所以,在你当前的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)
    ```
    

答案 1 :(得分:0)

这是您尝试子集(=通过<script> $(document).ready(function() { $("a").attr("target", "_self"); if(typeof(Storage) !== "undefined") { if (sessionStorage.pagecount) { if('<?=$random_value?>' == window.name) { sessionStorage.pagecount = Number(sessionStorage.pagecount) + 1; } else { var url = "url to remove random_value"; $.post(url, function (data, url) { sessionStorage.removeItem('pagecount'); sessionStorage.clear(); window.location = 'logout.php'; }); } } else { var url = "url to remove random_value"; $.post(url, function (data, url) { sessionStorage.removeItem('pagecount'); sessionStorage.clear(); window.location = 'logout.php'; }); } } else { var url = "url to remove random_value"; $.post(url, function (data, url) { sessionStorage.removeItem('pagecount'); sessionStorage.clear(); window.location = 'logout.php'; }); } }); </script> 函数时获得的错误。由于此错误是由代码中的x[i]引起的,因此我们可能会推测summary(cars)对象引用文档编织范围内的函数。

您可能忘记加载数据,或者您有一个在当前范围内定义的同名函数。

答案 2 :(得分:0)

正如@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)
```