В R я могу найти среду, связанную с ленивым аргументом?
Извините, это немного сложно.
Я хочу захватить выражение аргумента, но также знаю, в какой среде оно должно оцениваться. Примерно так:
make.promise = function(x = print(b), b = 7) {
expr = substitute(x)
env = parent.frame()
function() {
eval(expr, env)
}
}
p1 = (
function() {
a = 2
make.promise(print(a))
}
)()
p2 = make.promise()
Проблема в том, что если аргумент не указан для x
, его среда становится локальной средой make.promise()
и я не знаю, как это обнаружить. Есть ли функция, кроме substitute
Я мог бы использовать это также захватывает окружающую среду?
1 ответ
Самая простая реализация make.promise
было бы:
make.promise <- function(x) {
function() x
}
Но я не думаю, что это то, что вы ищете. Я не знаю ни одного способа найти связанную среду - вы можете попробовать отправить по электронной почте список рассылки r-devel.