Dear Peter and Henrik,

What the Rcmdr does may be overkill for Henrik's application, since it also
intercepts error and warning messages, and tries to take the behaviour of
the R console. The relevant functions are in the file Commander.R in the
source package; the principal one is:

doItAndPrint <- function(command, log=TRUE) {
    messages.connection <- textConnection(".messages", open="w")
    sink(messages.connection, type="message")
    output.connection <- textConnection(".Output", open="w")
    sink(output.connection, type="output")
    on.exit({
        sink(type="message")
        if (!.console.output) sink(type="output") # if .console.output,
output connection already closed
        close(messages.connection)
        close(output.connection)
        })
    if (log) logger(command)
    result <-  try(eval(parse(text=command), envir=.GlobalEnv), silent=TRUE)
    if (class(result)[1] ==  "try-error"){
        tkmessageBox(message=paste("Error:",
            strsplit(result, ":")[[1]][2]), icon="error")
        if (.console.output) sink(type="output")
        tkfocus(.commander)
        return()
        }
    if (isS4object(result)) show(result) else print(result)
    if (.Output[length(.Output)] == "NULL") .Output <-
.Output[-length(.Output)] # suppress "NULL" line at end of output
    if (length(.Output) != 0) {  # is there output to print?
        if (.console.output) {
            out <- .Output
            sink(type="output")
            for (line in out) cat(paste(line, "\n", sep=""))
            }
        else{
            for (line in .Output) tkinsert(.output, "end", paste(line, "\n",
sep=""))
            tkyview.moveto(.output, 1)
            }
        }
    else if (.console.output) sink(type="output")
    checkWarnings(.messages)  # errors already intercepted, display any
warnings
    result
    }

Regards,
 John

--------------------------------
John Fox
Department of Sociology
McMaster University
Hamilton, Ontario
Canada L8S 4M4
905-525-9140x23604
http://socserv.mcmaster.ca/jfox 
-------------------------------- 

> -----Original Message-----
> From: [EMAIL PROTECTED] 
> [mailto:[EMAIL PROTECTED] On Behalf Of Peter Dalgaard
> Sent: Friday, February 04, 2005 5:21 AM
> To: Henrik Andersson
> Cc: r-help@stat.math.ethz.ch
> Subject: Re: [R] Output from function to a tcltk window
> 
> Henrik Andersson <[EMAIL PROTECTED]> writes:
> 
> > I would like to display output to a tcltk window from e.g. 
> a call to 
> > summary().
> > 
> > 
> > 
> > I tried to get something else than oneliners into a text 
> window of the 
> > kind found at:
> > 
> > 
> http://bioinf.wehi.edu.au/~wettenhall/RTclTkExamples/TextWindows.html
> > 
> > But without success.
> 
> (Rcmdr must be doing this sort of thing already?)
> 
> I'd try this:
> 
> 1) str <- paste(capture.output(summary(myfit),collapse="\n"))
> 
> 2) clone the tkfaq demo (or one of James W.'s examples), but replace
>    the line
> 
>    tkinsert(txt, "end", tkcmd("read", chn))
> 
> with 
> 
>    tkinsert(txt, "end", str)
> 
> -- 
>    O__  ---- Peter Dalgaard             Blegdamsvej 3  
>   c/ /'_ --- Dept. of Biostatistics     2200 Cph. N   
>  (*) \(*) -- University of Copenhagen   Denmark      Ph: 
> (+45) 35327918
> ~~~~~~~~~~ - ([EMAIL PROTECTED])             FAX: 
> (+45) 35327907
> 
> ______________________________________________
> R-help@stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! 
> http://www.R-project.org/posting-guide.html

______________________________________________
R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html

Reply via email to