2015-11-24 7 views
1

У меня есть некоторые трудности с реализацией презентации (beamer). Все работает нормально, пока я не включу функцию, которая проверяет конкретное условие и соответственно возвращает результат (graph - print text). Без этой функции он работает нормально. Итак, как я могу графически или распечатать вывод?Условно распечатать текст или показать график в представлении лучей

\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, как можно видеть из TEX, что RNW в вопросе производит:

\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 с лучом; единственное, что вам нужно быть осторожным, - это добавить параметр fragile к фреймам, которые содержат дословный код. [Source]

Таким образом, рама нуждается fragile option:

\begin{frame}[fragile]{test} 

С fragilenot to indent \end{frame} убедитесь. (Это случилось со мной после копирования кода из вопроса ...)

+0

Спасибо. Это помогает! – Googme