如果您想将 中的杂乱程度保持在最低水平.GlovalEnv
,最好将所有这些变量保存在单独的环境中,例如:
> setAll <- function(X) {
+ if (!(exists('myParams') && is.environment(myParams))) {
+ myParams <- new.env()
+ }
+ myParams$a = X + 1
+ myParams$b = X + 5
+ myParams$c = X + 10
+ myParams$d = X + 15
+ }
> setAll(100) #if X = 100
> myParams$a
[1] 101
或者您可能只是以 OO 编程的方式创建一个引用类作为替代解决方案:
> myParam <- setRefClass('myParam', fields = list('X' = 'numeric', 'a' = 'numeric', 'b' = 'numeric', 'c' = 'numeric', 'd' = 'numeric'))
> myParam$methods(initialize = function(X, ...) {
+ .self$a <- X + 1
+ .self$b <- X + 5
+ .self$c <- X + 10
+ .self$d <- X + 15
+ callSuper(...)
+ })
> foo <- myParam(pi)
> foo$a
[1] 4.141593
> foo$b
[1] 8.141593
...
当然,这些只是初始和虚拟线框,但希望这对进一步的想法有用。