在R文件中获取文件时,eval(expr,envir,enclos)出错

时间:2013-08-07 10:04:51

标签: r knitr lyx

当我尝试“编织HTML”或使用LyX生成pdf时,我遇到了环境问题。 当我直接运行R代码(或用Rstudio编译HTML笔记本)时,没关系。 我用knitr@1.3.7(开发版)完成了测试。我没有使用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"
> 

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

解决问题的一种方法是清除编织缓存按下按钮或将此环境变量设置为FALSE,请参阅下面的内容:

"--master" yarn-cluster

"--conf" "spark.executor.extraJavaOptions=-Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8"

"--conf" "spark.driver.extraJavaOptions=-Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8"

干杯!