If you want to control what gets printed in the output of your function, then 
you need to get into creating classes and methods.  Choose a class to return 
from your function, and create a print method for that class, then when you run 
your function the output will cause the print method to be called if you don't 
store the object, but the entire object will be available if stored.  E.g.:

testfunc <- function(x) {
        out <- list( a=summary(x), b=quantile(x), c=range(x) )
        class(out) <- 'myclass'
        return(out)
}

print.myclass <- function(x) {
        cat('my output:\n')
        print(x$a)
        cat('\n\n')
        cat('Q1: ',x$b[2], '\n')
        return(invisible(x))
}

testfunc(rnorm(100))
tmp <- testfunc(rnorm(100))
tmp
str(tmp)

Hope this helps,

-- 
Gregory (Greg) L. Snow Ph.D.
Statistical Data Center
Intermountain Healthcare
greg.s...@imail.org
801.408.8111


> -----Original Message-----
> From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-
> project.org] On Behalf Of soeren.vo...@eawag.ch
> Sent: Sunday, November 22, 2009 4:27 AM
> To: r-help@r-project.org
> Subject: [R] Define return values of a function
> 
> I have created a function to do something:
> 
> i <- factor(sample(c("A", "B", "C", NA), 793, rep=T, prob=c(8, 7, 5,
> 1)))
> k <- factor(sample(c("X", "Y", "Z", NA), 793, rep=T, prob=c(12, 7, 9,
> 1)))
> mytable <- function(x){
>    xtb <- x
>    btx <- x
>    # do more with x, not relevant here
>    cat("The table has been created, see here:\n")
>    print(xtb)
>    list(table=xtb, elbat=btx)
> }
> tbl <- table(i, k)
> mytable(tbl) # (1)
> z <- mytable(tbl) # (2)
> str(z) # (3)
> 
> (1) Wanted: outputs the string and the table properly. *Unwanted*:
> outputs the list elements.
> 
> (2) and (3) Wanted: outputs the string properly. Wanted: assigns the
> list properly.
> 
> How can I get rid of the *unwanted* part? That is, how do I define
> what the functions prints and -- on the other hand -- what it returns
> without printing?
> 
> Thanks
> 
> Sören
> 
> --
> Sören Vogel, Dipl.-Psych. (Univ.), PhD-Student, Eawag, Dept. SIAM
> http://www.eawag.ch, http://sozmod.eawag.ch
> 
> ______________________________________________
> 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.

______________________________________________
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