Hmmm. Caution would seem more appropriate than fear.

My point was that if you want the results as numbers rather than characters, 
it seems perverse to convert them to characters with print; you should use a 
suitable mechanism to return them as numbers. If you're nervous of returning 
values via the environment list and scoping rules it seems curious to accept 
return via console output.

I used '<<-' as shorthand for "a suitable mechanism". Depending on your 
circumstances, '<<-' may not be OK- in this example it seems very clear 
where it will find "an existing definition of the variable being assigned". 
Others in this thread have covered more robust approaches, but as long as 
you're careful with environments and scoping it seems there are several ways 
to do what you want.

Best regards,

Keith J
"Ravi Varadhan" <rvarad...@jhmi.edu> wrote in message 
news:2f9ea67ef9ae1c48a147cb41be2e15c303e...@dom-eb-mail1.win.ad.jhu.edu...
>I did think of this solution, Keith, but I am generally uncomfortable (may 
>be "paranoid" is a better word) with the use of `<<-'.  Perhaps, my fear is 
>unjustified in this particular situation.
>
> Thanks,
> Ravi.
> -------------------------------------------------------
> Ravi Varadhan, Ph.D.
> Assistant Professor,
> Division of Geriatric Medicine and Gerontology School of Medicine Johns 
> Hopkins University
>
> Ph. (410) 502-2619
> email: rvarad...@jhmi.edu
>
>
> -----Original Message-----
> From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org] 
> On Behalf Of Keith Jewell
> Sent: Friday, June 24, 2011 11:49 AM
> To: r-h...@stat.math.ethz.ch
> Subject: Re: [R] How to capture console output in a numeric format
>
> If you don't want the information as character, why are you printing it
> rather than storing it in a matrix?
> Why not something along the lines of this...
>
> fr <- function(x) {   ## Rosenbrock Banana function
>    on.exit(aMatrix <<- rbind(aMatrix,(cbind(x1, x2, f))))
>    x1 <- x[1]
>    x2 <- x[2]
>    f <- 100 * (x2 - x1 * x1)^2 + (1 - x1)^2
>    f
> }
> aMatrix <- NULL
> ans <- optim(c(-1.2,1), fr)
> aMatrix
>
> HTH
>
> Keith J
> -----Original Message-----
> "Ravi Varadhan" <rvarad...@jhmi.edu> wrote in message
> news:2f9ea67ef9ae1c48a147cb41be2e15c303e...@dom-eb-mail1.win.ad.jhu.edu...
> Thank you very much, Jim.  That works!
>
> I did know that I could process the character strings using regex, but was
> also wondering if there was a direct way to get this.
>
> Suppose, in the current example I would like to obtain a 3-column matrix
> that contains the parameters and the function value:
>
> fr <- function(x) {   ## Rosenbrock Banana function
>    on.exit(print(cbind(x1, x2, f)))
>    x1 <- x[1]
>    x2 <- x[2]
>    f <- 100 * (x2 - x1 * x1)^2 + (1 - x1)^2
>    f
> }
>
> fvals <- capture.output(ans <- optim(c(-1.2,1), fr))
>
> Now, I need to tweak your solution to get the 3-column matrix.  It would 
> be
> nice, if there was a more direct way to get the numerical output, perhaps 
> a
> numeric option in capture.output().
>
> Best,
> Ravi.
>
> -------------------------------------------------------
> Ravi Varadhan, Ph.D.
> Assistant Professor,
> Division of Geriatric Medicine and Gerontology School of Medicine Johns
> Hopkins University
>
> Ph. (410) 502-2619
> email: rvarad...@jhmi.edu

______________________________________________
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