В R я могу найти среду, связанную с ленивым аргументом? - PullRequest
1 голос
/ 26 июня 2011

Извините, это немного сложно.

Я хочу захватить выражение аргумента, но также знаю, в какой среде оно должно оцениваться. Примерно так:

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 Ответ

0 голосов
/ 27 июня 2011

Простейшая реализация make.promise будет выглядеть так:

make.promise <- function(x) {
    function() x
}

Но я не думаю, что это то, что вы ищете.Я не знаю ни одного способа найти связанную среду - вы можете попробовать отправить по электронной почте список рассылки r-devel.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...