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 ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel