Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

Once again working on my slides for the AMSI Lecture 2012 tour, it took me a while to get the following LaTeX code (about the family reunion puzzle) to work:

\begin{frame}[fragile,label=notleM2]
\slidetitle{A family meeting}
\begin{block}{Random switch of couples}
\only<1>{
\begin{itemize}
\item Pick two couples [among the 20 couples] at random with probabilities proportional
to the number of other couples they have not seen\\
{\verb+prob=apply(meet(T)==0,1,sum)+}
\item switch their respective position during one of the 6 courses
\item accept the switch with Metropolis--Hsatings probability\\
{\verb#log(runif(1))<(penalty(old)-penalty(new))/gamma#}
\end{itemize}
}
\only<2>{
\begin{verbatim}
for (t in 1:N){
prop=sample(1:20,2,prob=apply(meet(T)==0,1,sum))
cour=sample(1:6,1)
Tp=T
Tp[prop,cour]=T[prop,cour]
Tp[prop,cour]=T[prop,cour]
penatp=penalty(meet(Tp))
if (log(runif(1))<(penat-penatp)/gamma){
T=Tp
penat=penatp}
}
\end{verbatim}
}
\end{block}
\end{frame}

since I was getting error messages of the form

 (./simulation.38.vrb)  (./simulation.39.vrb
!Illegal parameter number in definition of \[email protected]
l
l.12 }
?


Using two frames in a row instead of the “only<2>” version  did not help…

So I eventually inserted another “normal” slide in-between:

\begin{frame}[fragile,label=notleM2]
\slidetitle{A family meeting}
\begin{block}{Random switch of couples}
\begin{itemize}
\item Pick two couples [among the 20 couples] at random with probabilities proportional
to the number of other couples they have not seen\\
{\verb+prob=apply(meet(T)==0,1,sum)+}
\item switch their respective position during one of the 6 courses
\item accept the switch with Metropolis--Hsatings probability\\
{\verb#log(runif(1))<(penalty(old)-penalty(new))/gamma#}
\end{itemize}
\end{block}
\end{frame}
\begin{frame}
\slidetitle{A family meeting}
\begin{block}{Random switch of couples}
For instance, propose to replace
$$S = \left( \begin{matrix} 1 &1 &3 &2 &4 &2\\ 2 &1 &3 &3 &2 &4\\ \vdots&\vdots &\vdots &\vdots &\vdots &\vdots \\ 3 &2 &2 &2 &4 &4\\ \end{matrix}\right) \quad\text{with}\quad S^\prime = \left( \begin{matrix} 1 &1 &3 &2 &\RedOrange{2} &2\\ 2 &1 &3 &3 &\RedOrange{4} &4\\ \vdots&\vdots &\vdots &\vdots &\vdots &\vdots \\ 3 &2 &2 &2 &4 &4\\ \end{matrix}\right)$$
\end{block}
\end{frame}
\begin{frame}[fragile,label=notleM2bis]
\slidetitle{A family meeting}
\begin{block}{Random switch of couples}
\begin{verbatim}
for (t in 1:N){
prop=sample(1:20,2,prob=apply(meet(T)==0,1,sum))
cour=sample(1:6,1)
Tp=T
Tp[prop,cour]=T[prop,cour]
Tp[prop,cour]=T[prop,cour]
penatp=penalty(meet(Tp))
if (log(runif(1))<(penat-penatp)/gamma){
T=Tp
penat=penatp}
}
\end{verbatim}
\end{block}
\end{frame}

and it worked… Fairly pedestrian, but then… (For whatever reason, I could not use the “sourcecode” presentation with LaTeX code because “>” and “<” were turned into their HTML version.)