[R] Sweave with scan()-ed data

William Revelle lists at revelle.net
Mon Mar 7 16:59:10 CET 2011


At 10:21 AM -0500 3/7/11, Michael Friendly wrote:
>In an Sweave slide, I want to use sem::read.moments() and 
>sem::specify.model(), which work
>by using scan() to read the following lines, up to the first blank 
>line.  However, Sweave
>throws an error:
>
>  > Sweave("sem-thurstone.Rnw")
>
>Writing to file sem-thurstone.tex
>Processing code chunks ...
>  1 : term hide (label=arrests-setup)
>  2 : echo term hide (label=thurstone-data)
>
>Error:  chunk 2 (label=thurstone-data)
>Error in sem-thurstone.Rnw:43:12: unexpected numeric constant
>42:     .828
>43:     .776   .779
>                ^
>
>Is there some switch or option for Sweave that will make this work?
>Below is the slide in question in an executable example:
>
>\documentclass[dvipsnames,pdflatex,compress,beamer]{beamer}
>\usepackage{Sweave}
>
>\definecolor{Sinput}{rgb}{1,0,0}
>\definecolor{Scode}{rgb}{0,0,0.56}
>\definecolor{Soutput}{rgb}{0,0,1}
>\DefineVerbatimEnvironment{Sinput}{Verbatim}{formatcom={\color{Sinput}},fontsize=\footnotesize,baselinestretch=0.9}
>\DefineVerbatimEnvironment{Soutput}{Verbatim}{formatcom={\color{Soutput}},fontsize=\footnotesize,baselinestretch=0.85}
>\DefineVerbatimEnvironment{Scode}{Verbatim}{formatcom={\color{Scode}},fontsize=\small}
>
>\begin{document}
>
>\SweaveOpts{engine=R,height=6,width=6,results=hide,fig=FALSE,echo=TRUE}
>\SweaveOpts{prefix.string=fig/sem}
>
>\section{sem package: Second-order CFA, Thurstone data}
>
>\begin{frame}[fragile]
>   \frametitle{sem package: Second-order CFA, Thurstone data}
>   \framesubtitle{Data}
>Data on 9 ability variables:
><<thurstone-data, echo=TRUE>>=
>R.thur <- read.moments(diag=FALSE, names=c('Sentences','Vocabulary',
>    'Sent.Completion','First.Letters','4.Letter.Words','Suffixes',
>    'Letter.Series','Pedigrees', 'Letter.Group'))
>     .828
>     .776   .779
>     .439   .493    .46
>     .432   .464    .425   .674
>     .447   .489    .443   .59    .541
>     .447   .432    .401   .381    .402   .288
>     .541   .537    .534   .35    .367   .32   .555
>     .38   .358    .359   .424    .446   .325   .598   .452
>
>@
>\end{frame}
>\end{document}

At 10:31 AM -0500 3/7/11, Duncan Murdoch wrote:
>On 07/03/2011 10:21 AM, Michael Friendly wrote:
>>In an Sweave slide, I want to use sem::read.moments() and
>>sem::specify.model(), which work
>>by using scan() to read the following lines, up to the first blank
>...snip...
>>42:     .828
>>43:     .776   .779
>>                  ^
>>
>>Is there some switch or option for Sweave that will make this work?
>
>I don't think so.  The way Sweave works is not to pipe the code 
>chunks into a console-like evaluator, it's to parse the whole code 
>chunk, then
>evaluate the expressions one by one.
>
>So you can probably fake the behaviour by telling read.moments to 
>read from somewhere else and showing different code than you really
>executed on the slide, but I don't think there's a way to honestly 
>do what you want.
>
>You might be able to automate this, i.e. to write code that 
>source()'s a file and echos the right tex code to make it look as 
>though it was entered
>at the command line, but it would be messy.
>
>Duncan Murdoch
>
>>Below is the slide in question in an executable example:
>>
>>\documentclass[dvipsnames,pdflatex,compress,beamer]{beamer}
>>\usepackage{Sweave}
>...snip...
>>       .541   .537    .534   .35    .367   .32   .555
>>       .38   .358    .359   .424    .446   .325   .598   .452
>>
>>@
>>\end{frame}
>>\end{document}


Not a Sweave solution, but that data set is available in psych:

library(psych)
data(bifactor)
Thurstone


Bill


>
>______________________________________________
>R-help at r-project.org mailing list
>https://stat.ethz.ch/mailman/listinfo/r-help
>PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
>and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list