2015-02-06 46 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或任何,但必須使用引用.......是一個鬆散的時間來找到出。

再次感謝保羅,我希望這可以幫助其他用戶。