是否有一种惯用的方法为变量分配默认值?但是没有覆盖它已经被分配了?
目前我选择了
myvar <- ifelse(exists("myvar"), myvar, "my default value")
但myvar
在那里重复了3次。我希望找到一个构造,我不需要重复变量名称,如
setdefault(myvar, "my default value") # won't work
我知道如何为函数参数指定默认值(这是非常简洁的),但我想知道是否有类似的&#34;常规&#34;变量。
答案 0 :(得分:0)
我找不到任何&#34;内置&#34;提供和最接近我想要的语法是这样的:
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) # 30