2012-11-25 30 views
2

我開始學習R和Sweave,並花了最近幾個小時試圖找出一個問題,根據我的Google-fu,似乎是相當陌生或不常見的(就像我發現只有兩個引用問題)。重複使用的代碼塊中的空白

也就是說,當在Sweave中重新使用代碼塊時,看起來你是not allowed any preceding whitespace。例如:

\documentclass{article} 

\begin{document} 

<<label=fig1boxplot, include=FALSE>>= 
boxplot(mpg~cyl,data=mtcars) 
@ 

\begin{figure} 
\centering 
<<label=fig1, fig=TRUE, echo=FALSE>>= 
<<fig1boxplot>> 
@ 
\end{figure} 

\end{document} 

如預期如果存在與<<(誤差取決於哪一行是縮進)開始的任何行的前面的任何空白將不起作用。我發現了一個work-around將R開發者郵件列表,讓我縮進,其中塊被重用行(<<figboxplot>>),但仍沒有任何其他塊(<<label=...

  • 爲什麼Sweave不允許有重複使用代碼的白色空間大塊,特別是因爲解決方法似乎實際上很微不足道?
  • 我該如何解決這個問題並按照我喜歡的方式縮進塊(或任何Sweave代碼)?
+1

要說清楚,你只是問爲什麼Sweave解析器按照它的方式工作? – joran

+0

實際上,現在我已經嘗試瞭解決方法,它只解決了縮進<<>行的問題,但是縮進了表示塊開始的任何行('<< label = ...')仍然會導致錯誤或輸出錯誤。由於目前還沒有答案,所以我增加了如何解決這個問題的一般問題。 – ThomasH

回答

3

簡短的回答是使用knitr代替,它允許縮進代碼塊。

對於你在Sweave上的問題,答案也很簡短:它是由設計(至少現在)。我個人的經驗是,即使在你所說的實施努力方面微不足道,也很難做到這一點。這是R附加軟件包的一個很好的理由。

+2

@ThomasH您正在使用一個比兩年前更早發佈的R版本,這非常糟糕,我強烈建議您更新R,因爲在Ubuntu上設置存儲庫非常簡單:http:// cran .r-project.org/bin/linux/ubuntu /對於你所看到的錯誤,我建議你在'〜/ .Renviron'中設置環境變量'R_LIBS_USER'爲一個可寫目錄,例如https://github.com/yihui/configuration/blob/master/.Renviron –

+0

感謝您的幫助。我從10.10到12.04更新了Ubuntu,並沒有讓我可憐的舊筆記本電腦死在這個過程中,並設法讓R版本爲2.15.2,儘管我不得不在我的源列表中添加'ppa:marutter/rrutter',使用愛爾蘭CRAN鏡從2.14更新到2.15。 – ThomasH

+0

@ThomasH太好了。歡迎來到精密穿山甲和R 2.15.2! –