On 13/07/2015 5:06 PM, Daniel Caro wrote: > Hello, > > Sorry if this has already been addressed before but I could not find any > helpful references. > > I would like to create a function that outputs a single element of a list > but stores all elements, similar to 'lm' and many other functions. There > are several answers on how to return multiple objects with lists, for > example: > > http://r.789695.n4.nabble.com/How-to-return-multiple-values-in-a-function-td858528.html > > http://stackoverflow.com/questions/8936099/returning-multiple-objects-in-an-r-function > > But the examples show how to print multiple outputs, such as > > functionReturningTwoValues <- function() {return(list(first=1, second=2))} > functionReturningTwoValues() > > And I only want the function to print a single element from the list but > still store the other elements such that they can be retrieved with > functionReturningTwoValues$first, for example. My function produces > bootstrap coefficients so clearly I don't want to print the bootstrap > output but I do want users to be able to access it.
You need to give your object a class, and define a print method for that class. It's pretty simple: functionReturningTwoValues <- function() {return(structure(list(first=1, second=2), class="MyClass"))} print.MyClass <- function(x, ...) { print(x$first, ...) } This is using "S3 classes". There are other systems (S4, etc.) that let you do this, but none are simpler. Duncan Murdoch ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.