1
我是R新手,在理解所谓的“环境”和正确使用它们的方法时遇到了一些麻烦。我在R语言中错过了很多静态变量(如Java)。如何在第一次运行或输入更改时初始化R函数
我正在编写一个程序,其中有一些函数需要在第一次运行时初始化。为了实现这个功能,我创建了一个新的环境,这个环境只能被这个特定的功能访问(例如“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)
}
你可能会发现在这样的环境下工作时存在'exists'和'assign'功能 – James 2013-04-26 13:37:56
OTOH,除非你需要在全局环境中隐藏'f1',为什么呢?你可以很容易(我认为...)在'myfunction1'中放入一些'load'或'source'调用来获得保存文件中的任何对象。 – 2013-04-26 15:05:43