自动重复的Sweave代码

时间:2013-11-16 17:57:44

标签: r automation latex knitr sweave

在我的Sweave文件中,我将使用相同的代码块重复多次:

<<tab.r,results=tex, echo=FALSE>>=
tableInstance <- getTable(first1,second)
latex(tableInstance,file = "",rowname=NULL,longtable=TRUE,dec=4,center='centering',caption="test", lines.page=4000)
@
\newpage
<<tab.r,results=tex, echo=FALSE>>=
tableInstance <- getTable(first2,second)
latex(tableInstance,file = "",rowname=NULL,longtable=TRUE,dec=4,center='centering',caption="test", lines.page=4000)
@
\newpage
<<tab.r,results=tex, echo=FALSE>>=
tableInstance <- getTable(first3,second)
latex(tableInstance,file = "",rowname=NULL,longtable=TRUE,dec=4,center='centering',caption="test", lines.page=4000)
@
\newpage

这段代码之前,我将通过以下方式定义first1,first2,first3,second,例如:

<<tab.r,results=tex, echo=FALSE>>=
first1 <- "FirstCondition1"
first2 <- "FirstCondition2"
first3 <- "FirstCondition3"
second <- "SecondCondition"
@

我想知道的是如何在某种功能(RLaTeX)中获取上面的大量代码,所以我不必在我的代码中重复10次文献?理想情况下,它将是某种函数,其中参数将是first1,first2,first3,second并且不需要粘贴大量代码。

1 个答案:

答案 0 :(得分:2)

那么,你只是在问如何写一个函数?

<<tab.r1,results=tex, echo=FALSE>>=
myfun <- function(a,b){
    tableInstance <- getTable(a,b)
    latex(tableInstance,file = "",
          rowname=NULL,longtable=TRUE,dec=4,center='centering',
          caption="test", lines.page=4000)
}
myfun(first1,second)
@
\newpage
<<tab.r2,results=tex, echo=FALSE>>=
myfun(first2,second)
@
\newpage
<<tab.r3,results=tex, echo=FALSE>>=
myfun(first3,second)
@
\newpage

注意:您不应该使用重复的块名称,所以我已经更改了它们。