首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否为R变量指定默认值,除非它已被赋值?

是否为R变量指定默认值,除非它已被赋值?
EN

Stack Overflow用户
提问于 2016-12-09 22:19:44
回答 1查看 160关注 0票数 0

有没有一种惯用的方法来给变量赋一个默认值?但是不覆盖它已经被分配了吗?

目前我满足于

代码语言:javascript
运行
复制
myvar <- ifelse(exists("myvar"), myvar, "my default value")

但是myvar在那里被重复了3次。我希望找到一种不需要重复变量名的构造,例如

代码语言:javascript
运行
复制
setdefault(myvar, "my default value") # won't work 

我知道如何将默认值赋给函数参数(这非常简洁),但我想知道是否有类似的“常规”变量。

EN

Stack Overflow用户

发布于 2016-12-09 22:19:44

我找不到任何提供的“内置”,最接近我想要的语法是这样的:

代码语言:javascript
运行
复制
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()可以用作全局变量的替代,全局变量已经提供了默认机制:

代码语言:javascript
运行
复制
getOption("a", 20) # 20
options(a=30)
getOption("a", 2) # 30
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41062479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档