Sweave 块的条件评估

Sweave 块的条件评估

我正在使用一些 R 代码来导入和操作时间序列。该代码需要几分钟才能运行,因此会生成一个相对较小的时间序列。

现在,为了防止排版花费大量时间,我想我可以直接将最终结果导入 R/Sweave,但同时,我希望没有保存对象的人能够自动生成它。就像

\IfFileExists{"data.dat"}{
<<echo=FALSE>>=
##  import data ##
@

<<eval=FALSE>>=
##  code to generate data ##
@

}
{

<<>>=
##  code to generate data ##
@

<<echo=FALSE>>=
## save data in data.dat ##
@

}

问题是 Sweave 编译忽略了\IfFileExists并执行了两个块。有没有办法阻止 Sweave 在满足特定条件(即文件存在)时执行块?

答案1

你不需要 LaTeX,只需要 R:

if (file.exists("data.dat")==TRUE) cat("yes") else cat ("no")

相关内容