Access objects of class formula

1

How do I access the objects in a formula, separately? For example:

e <- new.env()
a <- list()
b <- list()
a[[1]] <- matrix(rnorm(20), 2)
b[[1]] <- matrix(rnorm(20), 2)
e$a <- a
e$b <- b
f <- formula(a~b, env = e)
teste = function(arg1){
   #Aqui poderia ser realizada qualquer operação desde que acessasse "a" e "b" e retornasse essa operação em forma de outro ambiente.
}
    
asked by anonymous 02.07.2016 / 04:15

1 answer

0

Try this:

e <- new.env()
a <- list()
b <- list()
set.seed(123)
a[[1]] <- matrix(rnorm(20), 2)
b[[1]] <- matrix(rnorm(20), 2)
e$a <- a
e$b <- b
environment(f<-as.formula("a~b", env = e))
teste = function(arg1){
  #Aqui poderia ser realizada qualquer operação desde que acessasse "a" e "b" e retornasse essa operação em forma de outro ambiente.
  f<-arg1
  ne<-environment(f)
  xs<-sapply(all.vars(f),get,envir=ne)
  res<-Reduce("+",xs) # (a+b)
  ge <- new.env()
  ge$res<-res
  ge
}

ds<-teste(f)
ds$res

get("res", ds)

> get("res", ds)
           [,1]       [,2]        [,3]      [,4]      [,5]       [,6]      [,7]
[1,] -1.6282994  0.5327039 -0.49575153  1.298703 -1.824990 1.65054602 1.2958971
[2,] -0.4481524 -0.6583828  0.02837168 -1.111688  0.808153 0.06474234 0.9888162
          [,8]      [,9]      [,10]
[1,] 0.2657399  1.051768  0.3953932
[2,] 2.4755534 -2.028529 -0.8532624
    
04.07.2016 / 20:57