Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R knit2pdf能否使用全球环境?_R_Knitr - Fatal编程技术网

R knit2pdf能否使用全球环境?

R knit2pdf能否使用全球环境?,r,knitr,R,Knitr,在年,@Yihui说knitr使用全球环境。这让我很困惑——我的经验是,事实并非如此。我从未真正使用过knit,但我通常直接使用PDF 在一个小实验中,似乎knit确实使用了全局环境(或者使用envir参数指定的任何环境),但是knit2pdf没有 最简单的示例:global_test.Rnw文件 \documentclass{article} \begin{document} <<>>= print(x) @ \end{document} 我尝试将一个环境传递

在年,@Yihui说
knitr
使用全球环境。这让我很困惑——我的经验是,事实并非如此。我从未真正使用过
knit
,但我通常直接使用PDF

在一个小实验中,似乎
knit
确实使用了全局环境(或者使用
envir
参数指定的任何环境),但是
knit2pdf
没有

最简单的示例:global_test.Rnw文件

\documentclass{article}
\begin{document}
<<>>=
    print(x)
@
\end{document}
我尝试将一个环境传递给
knit2pdf
envir=globalenv()
)希望它能被传递下去,我只是得到一个未使用的参数错误

一般来说,我知道引用全局环境是一种糟糕的形式,但是有没有办法使用
knit2pdf
,或者显式地传递一个环境,或者使用
brew
sprintf
更好地解决上述问题


在我的用例中,我不认为
tools::texi2pdf
有用,因为我需要使用Xeletex进行编译,Xeletex可以轻松处理
knit2pdf

问题中的示例问题似乎与环境无关。如果在
knit2pdf
中省略了
output
参数,则所有内容都将正确编译且不会出现警告

作为参考,我在Windows7的R2.15.3上使用了Knitr1.1。我会通知Yihui,因为它似乎是
knit2pdf
中的一个bug(它调用
tools::texi2pdf
,它不接受输出文件路径)

更新:该问题已在
knitr
的开发版本中修复


还值得注意的是,RStudio中的
Compile PDF
按钮不使用您当前的环境,因此如果您希望访问全局变量并使用RStudio,请显式调用相应的
knit
函数,而不是依赖快捷方式。事实上,它没有直接使用
knit2pdf
,而是调用
rmarkdown::render

您是否尝试在
knit2pdf
中显式设置
envir
参数?是的,我只得到一个未使用的参数错误。您是否尝试过在不引用全局变量的情况下使用它?当我尝试使用
knit2pdf()
时,当R代码的一行是
print(“Hello World”)
时(即没有对全局变量的显式引用),我会得到完全相同的错误。。。我使用的是Windows XP机器,使用的是R-devel和knitr_1.1,引擎盖下有一个MikTeX发行版。@JoshO'Brien,谢谢你指出这一点!这似乎是
knit2pdf
output
参数的问题,当该参数消失时,其他一切都按预期工作。感谢您报告此问题!实际情况是,
knitr
1.1没有
envir
参数;
knitr的开发版本添加了它,但后来删除了
output
参数。现在最新的开发版本有两个参数,
knit2pdf()
现在应该可以正常工作了。我正在使用带有R标记的Rstudio。这是否也适用于降价文件?我使用source()在缓存块中运行脚本。我想在以后的块中使用在该脚本中计算的对象,但这些对象似乎对以后的块不可用。你能澄清一下我需要做什么吗?@statistican_in_在一个块中定义的训练对象肯定会在以后的块中可用,无论你是如何编译的。如果您在这方面有问题,请创建一个最小的示例,并将其作为问题发布。我创建了一个新的最小示例,关于在源脚本中使用缓存块以及在以后的块中访问R对象。@Yihui。我在Windows7上使用R_3.0.1、knitr_1.5、Emacs/ESS尝试了上述代码,但仍然收到消息“…状态为1”。当我删除输出部分时,生成了pdf。
x <- "Hello World"
knit(input="global_test.Rnw")
# Works as expected, could now call tools::texi2pdf to generate pdf.

knit2pdf(input="global_test.Rnw")
# Doesn't
running command '"C:\PROGRA~2\MIKTEX~1.9\miktex\bin\texi2dvi.exe" --quiet --pdf
"global.pdf"  -I "C:/PROGRA~1/R/R-215~1.3/share/texmf/tex/latex" -I
"C:/PROGRA~1/R/R-215~1.3/share/texmf/bibtex/bst"' had status 1