[R] Sweave and scan()

Duncan Murdoch murdoch.duncan at gmail.com
Thu Jul 29 01:11:15 CEST 2010


On 28/07/2010 6:33 PM, Murray Jorgensen wrote:
> Omigod! The archival links shows that this was the same problem that 
> caused me to give up on Sweave about 6 years ago. I guess I never 
> properly assimilated Brian Ripley's comments at the time.
> 
> I finished up doing this:
> 
> \begin{verbatim}
>  > height = scan()
> 1:  64 62 66 65
> 5:  62 69 72 72 70
> 10:
> Read 9 items
>  > part = scan(what = character(0))
> 1: "Soprano" "Soprano" "Soprano"
> 4: "Alto"    "Alto"    "Tenor"
> 7: "Tenor"   "Bass"    "Bass"
> 10:
> Read 9 items
> \end{verbatim}
> <<echo=FALSE,results=hide>>=
> height <- c(64, 62, 66, 65, 62, 69, 72, 72, 70)
> part = c("Soprano","Soprano", "Soprano",
>   "Alto",    "Alto",    "Tenor",
>   "Tenor",   "Bass",    "Bass")
> @
> 
> which does give the output I want (though in a different style) and 
> leaves the R session in the state that I want.

If you the look to be the same as with other chunks, you should use the 
Sinput, Soutput and possibly Schunk environments.  (Schunk normally does 
nothing, but you might have customized it.)  That is, write your stuff as

\begin{Schunk}
\begin{Sinput}
  > height = scan()
1:  64 62 66 65
5:  62 69 72 72 70
10:
\end{Sinput}
\begin{Soutput}
Read 9 items
\end{Soutput}
\begin{Sinput}
  > part = scan(what = character(0))
1: "Soprano" "Soprano" "Soprano"
4: "Alto"    "Alto"    "Tenor"
7: "Tenor"   "Bass"    "Bass"
10:
\end{Sinput}
\begin{Soutput}
Read 9 items
\end{Soutput}
\end{Schunk}

(I suppose it's debatable whether lines to scan() should be typeset as 
input or output.)

Duncan Murdoch


> 
> Thanks for all your help.
> 
> Murray
> 
> 
> 
> David Winsemius wrote:
>> On Jul 27, 2010, at 7:01 AM, Murray Jorgensen wrote:
>>
>>> Both suggestions generate similar errors to those of the original 
>>> code. I would also be worried if the results would not puzzle my 
>>> students.
>> You are teaching them about R or about Sweave? You are setting up code 
>> that is designed to run at an open console session, but submitting it to 
>> a batch process.
>>
>> http://finzi.psych.upenn.edu/R/Rhelp02/archive/31347.html
>>
>> After reading that I am wondering if you could set up a textConnection 
>> first and then  scan from that?
>>
>>  > con <- textConnection("64 62 66 65 62\n69 72 72 70")
>>  > scan(file=con)
>> Read 9 items
>> [1] 64 62 66 65 62 69 72 72 70
>>
> 
>



More information about the R-help mailing list