Другой способ (или стиль) - сохранить все глобальные переменные в специальной среде:
with( globals <- new.env(), {
# here define all "global variables"
sUm <- 10
mEan <- 5
})
# or add a variable by using $
globals$another_one <- 42
Тогда функция не сможет их получить:
sum <- function(x,y){
sum = x+y
return(sUm)
}
sum(1,2)
# Error in sum(1, 2) : object 'sUm' not found
Но вы всегда можете использовать их с глобалями $:
globals$sUm
[1] 10
Чтобы управлять дисциплиной, вы можете проверить, есть ли какая-либо глобальная переменная (кроме функций) вне globals
:
setdiff(ls(), union(lsf.str(), "globals")))