On Nov 22, 2009, at 6:26 AM, soeren.vo...@eawag.ch wrote:
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.
Whet the author of a function wants a particular object that exists
insode a function to be returned they may warp it in the function
return(). Otherwise R returns the result of the last evaluation which
in this case was list(table=xtb, elbat=btx).
If you want the function to return <something else>. then you could
put <something else> last in the sequence. If you want it to return
<nothing> than put this at the end:
return()
If you want the results to not be printed the use invisible()
Perhaps:
invisible(list( elbat=btx)) #substituted for list(table=xtb,
elbat=btx) after the print line
> tbl <- table(i, k)
> mytable(tbl) # (1)
The table has been created, see here:
k
i X Y Z
A 119 69 89
B 116 70 97
C 80 36 52
> z <- mytable(tbl) # (2)
The table has been created, see here:
k
i X Y Z
A 119 69 89
B 116 70 97
C 80 36 52
> str(z) # (3)
List of 1
$ elbat: 'table' int [1:3, 1:3] 119 116 80 69 70 36 89 97 52
..- attr(*, "dimnames")=List of 2
.. ..$ i: chr [1:3] "A" "B" "C"
.. ..$ k: chr [1:3] "X" "Y" "Z"
(2) and (3) Wanted: outputs the string properly. Wanted: assigns the
list properly.
If you want to return the list, elbat, then just put the name of the
list last in your case inside invisible or put it inside return().
How can I get rid of the *unwanted* part? That is, how do I define
what the functions prints
That set by cat and print in your case.
and -- on the other hand -- what it returns without printing?
By return() or the order of evaluation
--
David Winsemius, MD
Heritage Laboratories
West Hartford, CT
______________________________________________
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.