[R] How to capture console output in a numeric format

Keith Jewell k.jewell at campden.co.uk
Fri Jun 24 17:49:07 CEST 2011


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" <rvaradhan at jhmi.edu> wrote in message 
news:2F9EA67EF9AE1C48A147CB41BE2E15C303EA5D at 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: rvaradhan at jhmi.edu



More information about the R-help mailing list