В 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.

Другие вопросы по тегам