【问题标题】:Error in eval(expr, envir, enclos) when sourcing files inside the R file在 R 文件中获取文件时 eval(expr, envir, enclos) 出错
【发布时间】:2013-08-08 15:48:12
【问题描述】:

当我尝试“编织 HTML”或使用 LyX 生成 pdf 时,我遇到了环境问题。 当我直接运行 R 代码(或使用 Rstudio 编译 HTML 笔记本)时,就可以了。 我已经用 knitr@1.3.7 (dev version) 完成了测试。 knit@1.2 没有问题

在此处给出的示例(test.Rhtml > test.R > init.R > kCommon.R)之后,返回的错误是:

Period: From

Error in eval(expr, envir, enclos) : objet 'kStartDate' introuvable

to
Error in eval(expr, envir, enclos) : objet 'kEndDate' introuvable

test.R

## @knitr INIT
source("./init.R")
print(kStartDate)
print(kEndDate)

test.R 来源 init.R

if (!require(xtable)){
  install.packages("xtable")
  library(xtable)
}
source("./kCommon.R")

init.R 来源 kCommon.R

# Period
kStartDate   <- as.Date("2013-01-01", format="%Y-%m-%d")
kEndDate     <- as.Date("2013-06-30", format="%Y-%m-%d")

test.Rhtml

<html>

<head>
<title>TEST</title>
</head>

<body>

<!--begin.rcode set-options, echo=FALSE
output <- "html"
read_chunk('test.R')
opts_chunk$set(fig.width=7, fig.height=4.5, fig.align='center', tidy=FALSE, comment=NA) 
end.rcode-->
<!--begin.rcode INIT, echo=FALSE, message=FALSE, warning=FALSE
end.rcode-->
<p>
Period: From <!--rinline as.character(kStartDate) --> to <!--rinline as.character(kEndDate) -->
</p>


<hr/>
<p>
This document has been generated with <!--rinline version$version.string -->
on <!--rinline version$platform -->.  <br/>
[<!--rinline date() -->]
</p>
<!--begin.rcode FIN, echo=FALSE, message=FALSE, warning=FALSE
end.rcode-->

</body>
</html>

会话信息

> library(knitr);sessionInfo()
R version 3.0.1 (2013-05-16)
Platform: x86_64-apple-darwin10.8.0 (64-bit)

locale:
[1] fr_FR.UTF-8/fr_FR.UTF-8/fr_FR.UTF-8/C/fr_FR.UTF-8/fr_FR.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] knitr_1.3.7

loaded via a namespace (and not attached):
[1] digest_0.6.3   evaluate_0.4.6 

formatR_0.9    stringr_0.6.2  tools_3.0.1   

结果(删除选项后)

output <- "html"
read_chunk("test.R")
opts_chunk$set(fig.width = 7, fig.height = 4.5, fig.align = "center", tidy = FALSE,
    comment = NA)
Period: From

Error in eval(expr, envir, enclos) : objet 'kStartDate' introuvable

to
Error in eval(expr, envir, enclos) : objet 'kEndDate' introuvable

This document has been generated with R version 3.0.1 (2013-05-16) on x86_64-apple-darwin10.8.0. 
[Thu Aug 8 10:35:22 2013]

#EOF#

日志

> require(knitr); knit('test.Rhtml', encoding='UTF-8');
Le chargement a nécessité le package : knitr


processing file: test.Rhtml
  |.........                                                        |  14%
  ordinary text without R code

  |...................                                              |  29%
label: set-options
  |............................                                     |  43%
  ordinary text without R code

  |.....................................                            |  57%
label: INIT
  |..............................................                   |  71%
   inline R code fragments

Error in eval(expr, envir, enclos) : objet 'kStartDate' introuvable
Error in eval(expr, envir, enclos) : objet 'kEndDate' introuvable
  |........................................................         |  86%
label: FIN
  |.................................................................| 100%
  ordinary text without R code


output file: test.html

[1] "test.html"
> 

【问题讨论】:

  • 我无法重现 knitr v1.3.7 的问题;您可以将library(knitr);sessionInfo() 的输出添加到您的帖子中吗?
  • 我在帖子中添加了会话信息。
  • 你能把INIT中的块选项echo=FALSE, message=FALSE, warning=FALSE去掉,重新编译test.Rhtml,然后粘贴那个块的输出吗?
  • 我已删除所有块选项。我在帖子中添加了结果和日志。
  • INIT 块不在输出中,这意味着它没有被读入文档。这很奇怪。你能把所有这些文件放在一个 zip 文件(或 tar 球)中并通过电子邮件发送给我吗? xie@yihui.name

标签: r knitr lyx


【解决方案1】:

你在帖子中test.R给出的示例代码过于简化,而你发给我的脚本实际上是这样的:

##-------
## @knitr INIT
##-------
source("./init.R")

print(kStartDate)
print(kEndDate)

这有所不同,因为new syntax for external code chunks(在新闻中搜索----)。如果您只想在 RStudio 中折叠代码块,请参阅此问题 Code folding in external files with knitr and RStudio

【讨论】:

    【解决方案2】:

    解决此问题的一种方法是清除 knit 缓存按下按钮或将此环境变量设置为 FALSE,见下文:

    {r setup, include=TRUE, cache = FALSE}
    

    干杯!

    【讨论】:

      猜你喜欢
      • 2014-12-09
      • 1970-01-01
      • 2012-11-19
      • 2023-03-29
      • 2013-10-28
      • 1970-01-01
      • 2015-08-08
      相关资源
      最近更新 更多