2016-09-26 50 views
0

假設我有使用knitr.Rnw文件xtable對象的列表:自動使用knitr添加投影儀幻燈片

\begin{frame}[slide1] 
<<echo=FALSE, results="asis">>= 
    library(xtable) 
    data(tli) 
    fm1 <- aov(tlimth ~ sex + ethnicty + grade + disadvg, data = tli) 
    fm2 <- lm(tlimth ~ sex*ethnicty, data = tli) 
    xtabs<-list(xtable(fm1), xtable(fm2)) 
    #print first table 
    print(xtabs[[1]]) 
@ 
\end{frame} 

\begin{frame}[slide2] 
<<echo=FALSE, results="asis">>= 
    #print second table 
    print(xtabs[[2]]) 
@ 
\end{frame} 

因爲在我的實際項目中,xtabs是長度> 100的列表,我不知道是否有一種方法來包裝`打印(XTABS [[I]])」在一個組塊,使得其在與相同的設置,如每個載玻片打印逐個:

\begin{frame}[slides] 
<<echo=FALSE, results="asis">>= 
    library(xtable) 
    data(tli) 
    fm1 <- aov(tlimth ~ sex + ethnicty + grade + disadvg, data = tli) 
    fm2 <- lm(tlimth ~ sex*ethnicty, data = tli) 
    xtabs<-list(xtable(fm1), xtable(fm2)) 
    print(xtabs[[1]]) 
    print(xtabs[[2]]) 
    ... 
    print(xtabs[[x]]) 
@ 
\end{frame} 

回答

0

如果包括allowframebreaks選項,那麼你可以把它們放在一邊升到一個單一的框架和投影機可以把它分成多個框架。您可能要控制在幀由還包括\pagebreak<presentation>

可能像破:

\begin{frame}[allowframebreaks] 
<<echo=FALSE, results="asis">>= 
for(i in 1:n){ 
    print(xtabs[[i]]) 
    cat('\n\\pagebreak<presentation>\n') 
} 
@ 
\endframe 

我通常使用降價輸入knitr,所以noweb可能需要的東西有點不同。但使用減價,這可能是這樣的:

## Frame title goes here {.allowframebreaks} 

```{r rblock, roptions} 
#R code goes here 
``` 

這對我有效。

+0

謝謝,我試過了,但它顯示了一些錯誤。我發佈了一個我想到的答案,但可能不是一個好方法。我認爲你的方式更好,我會盡力去解決它。 –

0
<<echo=FALSE, results='asis'>>= 
for (i in 1:length(xtabs)) { 
    cat("\\begin{frame}[fragile]{Survival Analysis}\n") 
     print(xtabs[[i]], caption.placement="top") 
    cat("\\end{frame}\n") 
} 
@