2015-02-06 44 views
0

我不是乳胶新手,而是R,RStudio和Knitr,它们实际上是非常强大的工具。 我正在一个合理的大R脚本输出几个图。我的意图是使用Knitr设置latex文档,以便我可以继续使用我的R脚本,并且当我确实想要报告时,我跳转到.rnw并进行编译,并且我确信它会拥有最新生成的数据,因为它会直接读取.r脚本。R,Knitr和Latex(winedt和RStudio)编译和外化

首先,我想问一些关于如何做最佳做法的指导?我一直在考虑## ---- preambule并为每个相关的情节做这件事?一组情节?并在开始时放置一个read_chunk来加载数据并完成所有初步的工作。

让我们说这是一个很好的方式来做我想做的事情,并继续解决我遇到的问题。

我的脚本在R中运行得很好,没有一个警告,但是当read_chunk(file.R)Echo=TRUE一起被调用时,我看不到相同的输出。首先它通过了PDF,但确实生成了我可以编译的.tex。我看到的输出短得多,好像在某些点停止阅读。

我得到的错误是

processing file: minimal.Rnw 

    |                  
    |                 | 0% 
    |                  
    |.......               | 11% 
    ordinary text without R code 


    |                  
    |..............             | 22% 
label: external-code (with options) 
List of 1 
$ echo: logi FALSE 


    |                  
    |......................           | 33% 
    ordinary text without R code 


    |                  
    |.............................         | 44% 
label: preambule (with options) 
List of 1 
$ echo: logi FALSE 


    |                  
    |....................................        | 56% 
    ordinary text without R code 


    |                  
    |...........................................      | 67% 
label: boring-random 

    |                  
    |...................................................    | 78% 
    ordinary text without R code 


    |                  
    |..........................................................  | 89% 
label: boring-plots (with options) 
List of 3 
$ fig.width : num 4 
$ fig.height: num 4 
$ out.width : chr ".4\\linewidth" 


    |                  
    |.................................................................| 100% 
    inline R code fragments 


output file: minimal.tex 

Error in regexpr("\\.([[:alnum:]]+)$", x) : object 'filename' not found 
Calls: file_ext -> regexpr 
Execution halted 

然而,脚本不包含任何幻想。只需在加载数据,创建像SaveImage的一些功能和那种事情......

我有想法在我的脚本是什么使用正则表达式...

也许这是不相关的,但是这是输出我得到的时候echo=TRUE

## Loading required package: methods 
## Loading required package: MASS 
## Loading required package: modeest 
## 
## This is package 'modeest' written by P. PONCET. 
## For a complete list of functions, use 'library(help = "modeest")' or 'help.start()'. 
## 
## Loading required package: car 
## 
## Attaching package: 'lubridate' 
## 
## The following object is masked from 'package:plyr': 
## 
## here 

下一行,如果我在输出的RStudio运行相同的块是

Attaching package: ‘lubridate’ 

The following object is masked from ‘package:plyr’: 

    here 

> library(knitr) 
> 

我可能没有马上解决这个问题。我所需要做的就是使用Latex设置一个很好的文档,它可以编译我的R脚本中的零碎文件,如果这样做合理,我将编辑它,而不用考虑.tex文档。除了添加正确的标题(## ---- preambule等)。所以总结一下,我不知道正则表达式的问题来自哪里,我仍然创建一个可以编译的.tex,通过这样做,我发现我得到的输出结果不如在R直接运行脚本,就好像它卡在某处...我天真的想法往往会导致图书馆加载问题。

感谢您的帮助,并致以最诚挚的问候。

+0

更新:而不是'read_chunk'我有复制/粘贴完全相同的代码,并尝试'源()',我最终与winedt具有相同的regexpr错误,但是.tex再次可以编译。 但是,即使是.tex编译,似乎'## ---- section'的执行无法正常工作。如果我通过复制/粘贴实际代码来替换该块,则会生成该图并且一切正常。除了如果我曾经在我的脚本上工作并改变它,我将不得不在我想要的.rnw中再次复制它。 – homer3018 2015-02-06 04:19:32

+0

我得到了使用相同的.rnw文件生成的PDF,但是在RStudio ...因此正则表达式的内容与WinEdt有某种关系。正在取得进展... – homer3018 2015-02-06 04:25:39

+0

即使从你冗长的解释中也无法真正了解你正在做的事情,但是在你提到的那些奇怪的错误的情况下:'traceback()'可能是你的朋友! – 2015-02-06 11:22:11

回答

0

感谢保罗,我有办法做正是我想要的:

我用的第一个块源(file.R)。 我用那么read_chunk(file.R)在第二块,并且是给我的可能性利用## ---- portion

然后通过把几个部分无处不在我的[R脚本部分执行脚本,我可以叫部分我想通过用R脚本中的部分名称调用块。希望这是明确的。

然而,这是令人困惑的是,例如fig.width是在英寸和out.width可以在英寸,cm或任何,但必须使用引用.......是一个松散的时间来找到出。

再次感谢保罗,我希望这可以帮助其他用户。