有没有一种惯用的方法来给变量赋一个默认值?但是不覆盖它已经被分配了吗?
目前我满足于
myvar <- ifelse(exists("myvar"), myvar, "my default value")但是myvar在那里被重复了3次。我希望找到一种不需要重复变量名的构造,例如
setdefault(myvar, "my default value") # won't work 我知道如何将默认值赋给函数参数(这非常简洁),但我想知道是否有类似的“常规”变量。
发布于 2016-12-09 22:19:44
我找不到任何提供的“内置”,最接近我想要的语法是这样的:
setdefault <- function(name, value) {
if ( ! exists(name) ) {
cat("assign",name, "the value", value)
assign(name, value, pos=1) # in the parent environment
} else {
cat(name, "is already assigned. Skip\n")
}
}
setdefault("a", 20)
cat(a,"\n") # 20
setdefault("a", 30)
cat(a,"\n") # 20这里定义的函数setdefault()将检查名称是否为exists(),如果不是,它将为assign(name, value, pos=1),这相当于调用者环境中的myvar <- value。
options()可以用作全局变量的替代,全局变量已经提供了默认机制:
getOption("a", 20) # 20
options(a=30)
getOption("a", 2) # 30https://stackoverflow.com/questions/41062479
复制相似问题