2015-11-24 25 views
1

實施(beamer)演示文稿時遇到一些困難。一切工作正常,直到我包含一個函數,它檢查一個特定的條件,並相應地返回輸出(圖形 - 打印文本)。沒有這個功能,它工作正常。那麼我怎樣才能繪製或打印輸出?有條件地打印文本或在投影儀演示文稿中顯示圖形

\documentclass[10pt]{beamer} 
\usepackage[T1]{fontenc} 
\begin{document} 

\begin{frame}{test} 

<<echo=FALSE, fig.height = 4>>= 

    dates <- seq(as.Date("2015-02-13"), as.Date("2015-02-22"), by = "days") 
    b <- c(1,1,1,1,2,2,3,3,3,0) 
    c <- c(20,30,26,20,30,40,5,10,4,0) 
    d <- c(11,2233,12,2,22,13,23,23,100,0) 
    df <- data.frame(dates,b,c,d) 

    plot(df) 

    test <- function(df) { 
    if(sum(tail(df[2:ncol(df)], 1)) > 0) { # check only last date 

     return(plot(df)) 

    } else { 

     print("Have a nice day!") 

    } 

    } 
test(df) 

@ 

\end{frame} 

\end{document} 
+0

爲什麼你有'fig.show ='hold''? – Hugh

+0

我認爲這是因爲安排的情節。但在目前的情況下,它對結果沒有任何影響 – Googme

回答

1

knitr包裹輸出在verbatim如可以從該RNW在問題產生的TEX可以看出:

\begin{frame}{test} 

\begin{knitrout} 
\definecolor{shadecolor}{rgb}{0.969, 0.969, 0.969}\color{fgcolor}\begin{kframe} 
\begin{verbatim} 
## [1] "Have a nice day!" 
\end{verbatim} 
\end{kframe} 
\includegraphics[width=10cm,height=8cm]{figure/unnamed-chunk-2-1} 

\end{knitrout} 

\end{frame} 

然而:

它是直接使用Sweave或knitr與beamer;唯一需要注意的是您必須將fragile選項添加到包含逐字代碼的幀中。 [Source]

因此,該框架需要fragile option

\begin{frame}[fragile]{test} 

隨着fragile確保not to indent \end{frame}。 (這發生在我複製了問題的代碼後...)

+0

謝謝。它幫助起來! – Googme