code_junkie

Worse sin: side effects or passing massive objects?

Nov 10th, 2011
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.06 KB | None | 0 0
  1. help(environment)
  2.  
  3. # You might do something like this:
  4.  
  5.  
  6.  
  7. outer <- function(datasets) {
  8. # create the return environment
  9. ret.env <- new.env()
  10. for(set in dataset) {
  11. tmp <- inner(set)
  12. # check for errors however you like here. You might have inner return a list, and
  13. # have the list contain an error component
  14. assign(set, tmp, envir=ret.env)
  15. }
  16. return(ret.env)
  17. }
  18.  
  19. #The inner function might be defined like this
  20.  
  21. inner <- function(dataset) {
  22. # I don't know what you are doing here, but lets pretend you are reading a data file
  23. # that is named by dataset
  24. filedata <- read.table(dataset, header=T)
  25. return(filedata)
  26. }
  27.  
  28. outerfunc <- function(names) {
  29. templist <- list()
  30. for (aname in names) {
  31. templist[[aname]] <- innerfunc(aname)
  32. }
  33. templist
  34. }
  35.  
  36. innerfunc <- function(aname) {
  37. retval <- NULL
  38. if ("one" %in% aname) retval <- c(1)
  39. if ("two" %in% aname) retval <- c(1,2)
  40. if ("three" %in% aname) retval <- c(1,2,3)
  41. retval
  42. }
  43.  
  44. names <- c("one","two","three")
  45.  
  46. name_vals <- outerfunc(names)
  47.  
  48. for (name in names) assign(name, name_vals[[name]])
Add Comment
Please, Sign In to add comment