[SNIP] > > This has been very helpful though I still do not > understand why one must call nts$cda using the > eval(parse()) command. Is it because nts is created > within the ukn environment?
You don't *have* to use the eval(parse()). This works just as well: mysum <- nts$cda. However, it appeared to me that you wanted the flexibility to return different values depending on the function call. results <- ukn(dd1, "a", "b", "nts$cda") results2 <- ukn(dd1, "a", "b", "nts$cdb") The eval/parse allows you to convert text into objects through eval(). So the "nam1" argument is specified by the user to return the object of choice. #Here's a simple example of eval/parse that will run #from the prompt. t <- "ls()" t parse(text=t) eval(parse(text=t)) I think Dan Nordlund's comment "Functions generally shouldn't require knowing how other functions work, they should only rely on what value is returned." is more useful here. Since R provides many ways to accomplish the same thing you can avoid eval/parse altogether. Note that his solution returned a vector of three values where as mine returned a list. It's unclear which you prefer, and it may be neither (especially as this was just a simple example). In this simple case, I would return a list with named elements and expect all objects returned from this function to have the same attributes. Then either "cda" or "cdb" could be used as necessary. As an example, consider a plotting function that requires both "cda" and "cdb" in order to plot them simultaneously. [SNIP] ______________________________________________ [email protected] 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.
