Это связано с областью видимости R Для этого нужно найти функцию "-"()
. Вы сказали R, чтобы оценить ваше выражение в среде ee
. Там нет функции "-"()
, поэтому она перешла к родительской среде ee
, которая:
> parent.env(ee)
<environment: R_EmptyEnv>
там, где нет функции "-"()
. Поскольку нет родительской среды для пустой среды
> parent.env(parent.env(ee))
Error in parent.env(parent.env(ee)) : the empty environment has no parent
R отказался от поиска и выдал ошибку.
Мы можем решить эту проблему, подключив родительскую среду к ee
, где R может найти функцию:
> parent.env(ee) <- .BaseNamespaceEnv
> with(ee, a - b)
[1] -1
Но я думаю, что было бы более естественным установить родителя ee
в качестве глобальной среды:
> parent.env(ee) <- globalenv()
> with(ee, a - b)
[1] -1
a
и b
всегда будут найдены в ee
, так как это первое обнаруженное окружение, но функции можно искать в обычном месте, как если бы они выполнялись в командной строке. Если вы делаете это при вызове функции, вам нужно назначить правильную среду.