2013-08-01 81 views
4

我想用knitR在Latex中生成模擬報告。我的R代碼在產品上有一個循環,併爲每個產品生成一個圖表。我想爲每個循環迭代包含一個節標題。我用resuls =「ASIS」,並試圖打印在循環中的章節標題,如下面的代碼塊:如何使用knitr從R代碼打印乳膠部分標題?

<<looptest, echo=FALSE, results='asis', warning=FALSE>>= 
for (product in c("prod 1","prod 2")){ 
    print(paste("\\section{",product,"}", sep="")) 
} 
@ 

的問題是,我在乳膠輸出得到這樣的:

[1] "\\section{prod 1}" 
[1] "\\section{prod 2}" 
+2

的解決方案是使用貓(),而打印()。 (產品在c(「prod 1」,「prod 2」)){cat(paste(「\\ section」)(012) {」產品, 「}」,九月= 「」)) } @ 具有正確的乳膠輸出: \節{督促1} \節{督促2} –

+3

這對評論有點多。發佈它作爲答案並接受。 – Thomas

回答

3

托馬斯建議我張貼此作爲一個答案。 的解決方案是使用貓()而不是打印()

<<looptest, echo=FALSE, results='asis', warning=FALSE>>= 
for (product in c("prod 1","prod 2")){ 
cat(paste("\\section{",product,"}", sep="")) } 
@ 

具有正確的膠乳輸出:

\section{prod 1} 
\section{prod 2} 
+0

我給出了!未定義的控制順序。當我做#cat(paste(「\\ section {」,field,「}」,sep =「」))時,有什麼想法嗎? – and0rsk

+0

@和0rsk - 這是因爲R將\ \看作「\ s」,這是一個未定義的控制序列。嘗試 貓(膏( 「\\\\部分{」,字段, 「}」,月= 「」)) – srvanderplas

2

如果您正在循環某些內容來動態生成章節/章節,我建議您使用knit_child的循環功能。請參閱GitHub上的the code from knitr-examples

+0

或者類似的,'knit_expand'例子:https://github.com/yihui/knitr-examples/blob/master/075-knit-expand.Rnw,https://github.com/yihui/knitr-examples/ blob/master/075-template.rnw – Henrik

+1

如果真實用例與OP描述的一樣簡單,我認爲'cat()'足夠了;否則,'knit_child()'或'knit_expand()'可能是更好的方法。 –