我是 R 新手,在理解所谓的“环境”和正确使用它们的方法方面遇到了一些麻烦。我在 R 语言中非常想念的是静态变量(比如在 Java 中)。
我正在编写一个带有几个函数的程序,这些函数需要在第一次运行时进行初始化。为了为每个函数实现这一点,我创建了只能由这个特定函数访问的新环境(例如,“f1”只能从“myfunction1”内部访问)。
我不喜欢我的解决方案是在函数体之外还有一些额外的代码,而且它不太可读。有没有更简单的方法来实现同样的目标?如果是,那么如果您能提供修改后的示例来向我展示它是如何工作的,那就太好了。谢谢你。
f1 <- new.env()
f1$initialized <- FALSE
f1$o <- NULL
f1$length <- NULL
f1$compute
myfunction1 <- function(x) {
if(f1$initialized == FALSE){
f1$initialized <- TRUE
f1$compute <- 2*pi^2+3
}
if(is.null(f1$length) || f1$length!=length(x)){
f1$length <- length(x)
if(f1$length==2) {f1$o<-read.table("data_1.txt")}
else {f1$o<-read.table("data_2.txt")}
}
print("Lets print something!")
return(f1$o * f1$compute * x + 1000)
}