From murdoch at stats.uwo.ca  Sat Feb 18 20:41:37 2006
From: murdoch at stats.uwo.ca (murdoch@stats.uwo.ca)
Date: Sat, 18 Feb 2006 20:41:37 +0100 (CET)
Subject: [Rd] Bug in Sweave? -- scoping problem? (PR#8615)
Message-ID: <20060218194137.913123F23C@slim.kubism.ku.dk>

I have found a strange scoping problem in Sweave.  The following Rnw
file doesn't produce the same output in Sweave as it does if I produce
an R file using Stangle and execute that:

\documentclass[12pt]{article}
\begin{document}
<<R>>=
election <- data.frame(A=1:3, B=9:7, C=rep(0,3))
partytotal <- rep(0, ncol(election))
for (i in 1:ncol(election)) {
      partytotal[i] <- sum(election[,i], na.rm=TRUE)
}
@

<<fig=true,width=12,height=6,echo=true>>=
names(partytotal) <- names(election)
partytotal <- sort(partytotal)
partytotal
dotchart(partytotal)
@
\end{document}

The data.frame "election" contains columns which are vote counts for 3
parties, with rows being 3 electoral districts.   The column totals are
6 for A, 24 for B, and 0 for C.  I calculate those totals in a vector
partytotal, assign the names to its entries, and then sort it.

The strange thing is that while the value in partytotal is output 
correctly as

\begin{Sinput}
  > names(partytotal) <- names(election)
  > partytotal <- sort(partytotal)
  > partytotal
\end{Sinput}
\begin{Soutput}
   C  A  B
   0  6 24
\end{Soutput}
\begin{Sinput}
  > dotchart(partytotal)
\end{Sinput}

but the dotchart contains the wrong values:  it shows sorted
values, but not sorted names, which is also what is left over in my
workspace after the Sweave call:

  > partytotal
   A  B  C
   0  6 24

These tests were run in R 2.2.1, but I see the same thing in today's 
R-devel.

Duncan Murdoch



[Rd] Bug in Sweave? -- scoping problem? (PR#8615)
murdoch@stats.uwo.ca