2012-07-09 4 views
0

Предположим, у нас есть одна или несколько сред и переменных в них. Мой вопрос заключается в том, как мы обращаемся к значениям этих переменных параметрически.Доступ к параметрическим значениям переменных внутри сред

rm(list = ls()) 

env1 <- new.env() 
env1$var1 <- "value1" 

env2 <- new.env() 
env2$var2 <- "value2" 

env <- ls.str(mode="environment")  # We get the environments 

var <- ls.str(eval(parse(text = env[1])))# We get the variables of an environment 

eval(var[1])        # We fail to get the value of a variable 

get(var[1], envir=env[1])    # It does not work, either 

Спасибо всем, заранее

+0

Вы имеете в виду нечто вроде 'get (" var2 ", env2)'? –

+0

Да, вы правы. Я должен был использовать get(). –

ответ

2

Вы должны использовать get, указав среду, что вы ожидаете найти объект:

get(var[1], envir=env1) 
[1] "value1" 

Итак, если вы хотите, чтобы указать, как arugment параметрически , использование:

get(var[1], envir=get(env[1])) 
[1] "value1" 
+0

Если нужно работать параметрически, мы должны использовать: get (var [1], envir = env [1]) #, но он не работает, –

+0

@Apostolos ОК, я отредактировал свой ответ. Вам нужно использовать 'get()' дважды. – Andrie

0

Решение, которое я нашел с вашей помощью:

get(var[1], envir=eval(parse(text = env[1]))) 
Смежные вопросы