On 09/12/2010 2:07 PM, Arnau Mir Torres wrote:
Hello.

I need that Sweave writes R output to a file. To do it, I put the following 
into the foo.Rnw file:


\documentclass{article}
\usepackage{Sweave}
\begin{document}

...

<<echo=F>>=
x<- rnorm(100)
y<- rnorm(100)
sink("foo.txt")
summary(lm(y~x))
sink()
@

...

\end{document}


When I run:

R CMD Sweave foo.Rnw

R responses:

Warning message:
In sink() : no sink to remove,

and It doesn't work. Somebody knows how I can fix it?


The problem is that Sweave executes each statement wrapped within sink( con ); statement; sink(). You need to avoid using sink() as a separate statement. One way would be to put the lines

sink("foo.txt")
summary(lm(y~x))
sink()

into a block using braces {}; Sweave would wrap the whole function call, not 
the individual lines.  That's essentially what
capture.output() does, so this should work:

writeLines( capture.output( summary(lm(y~x)) ), "foo.txt")

You can probably do it in other ways too.

Duncan Murdoch

______________________________________________
R-help@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.

Reply via email to