Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Jun 11th, 2012  |  syntax: None  |  size: 1.03 KB  |  hits: 17  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. How to evaluate variable names in a list that are set in the environment?
  2. envir1 <- new.env()
  3. assign("a", 7, envir=envir1)
  4. assign("b", 8, envir=envir1)
  5. assign("x", 9, envir=envir1)
  6.        
  7. lis <- list(1,2, as.name("a"), 5, as.name("x"))
  8.        
  9. getNumbers2 <- function(li,pos) {
  10.     ## Part where i dont know  
  11.     return(li[[pos]]) ## dont works. the name of the variable is returned
  12. }
  13.  
  14. getNumbers <- function(li,pos, env1) {
  15.     environment(getNumbers2) <- env1
  16.     getNumbers2(li,pos)
  17. }
  18.  
  19. getNumbers(lis, 3, envir1)
  20. a ## << wanna have 7 here
  21.        
  22. R> str(l[[3]])
  23.  symbol a
  24.        
  25. env1 <- new.env()
  26. assign("a", 7, envir=env1)
  27. assign("b", 8, envir=env1)
  28. assign("x", 9, envir=env1)
  29. ll <- list(1, 2, "a", 5, "x")
  30.        
  31. with(env1, get(ll[[3]]))
  32.        
  33. R> with(env1, get(ll[[3]]))
  34. [1] 7
  35.        
  36. R> get(ll[[3]], envir = env1)
  37. [1] 7
  38.        
  39. getNumbers <- function(obj, pos, env) {
  40.     get(obj[[pos]], envir = env)
  41. }
  42.        
  43. R> getNumbers(ll, 3, env1)
  44. [1] 7
  45.        
  46. R> env1[[ll[[3]]]]
  47. [1] 7
  48.        
  49. getNumbers <- function(obj, pos, env) {
  50.     env[[obj[[pos]]]]
  51. }
  52.  
  53. R> getNumbers(ll, 3, env1)
  54. [1] 7