Вы имеете в виду "контекст", я думаю, что глобальная среда R.Каждый экземпляр RenjinScriptEngine имеет свою собственную независимую глобальную среду.
Вы можете проверять, изменять и очищать значения, заданные в глобальной среде, используя базовые функции R, например:
engine.eval("print(ls())"); // print all symbols in the global environment
engine.eval("rm(ls())"); // remove all symbols in the global environment
// (that don't start with a "." )
engine.eval("rm(ls(all.names=TRUE))"); // remove everything
Вы также можете использовать API javax.script для выполнениято же самое:
engine.getBindings(ScriptContext.ENGINE).clear();
В зависимости от вашего варианта использования может быть достаточно очистки глобальной среды, но имейте в виду, что RenjinScriptEngine содержит дополнительное состояние.
Если вы загружаете пакеты и / или их пространства имен через library()
, require()
или mypackage::fun()
, это повлияет на внутреннее состояние RenjinScriptEngine.
Другие вещи, которые влияют на сессию-уровень (RenjinScriptEngine) состояние:
- Глобальные параметры, установленные с помощью
options()
- Состояние генератора случайных чисел и начальное число
- Внутреннее состояние сторонних пакетов
- Открытие файлов и других подключений