0

如果我只想在变量未定义的情况下分配变量,这是最简洁的方法,还是有更短的语法来表示这个想法?

if (!exists('t')) t = 1

例如,在 中C#,可以写

int y = x ?? -1;

表达y应该分配给x除非x为空的想法。

4

2 回答 2

4

您可以将自己的中缀运算符拼接在一起:

`%<-%`  <- function(x,y){
   nm <- as.character(substitute(x))
   if (!exists(nm,where = parent.frame())){
     assign(x=nm,value=y,envir = parent.frame())
     return(TRUE)
   }else{
     return(FALSE)
   }
 }

> x <- 2 
> x %<-% 5
[1] FALSE
> x
[1] 2
> y %<-% 10
[1] TRUE
> y
[1] 10
于 2013-10-29T03:32:06.143 回答
0

检查向量是否为空的一个好方法是使用长度函数。不过,这可能与您的具体问题无关。

> t<-NULL
> length(t)
[1] 0
> t<-1
> length(t)
[1] 1
于 2013-10-30T08:15:20.950 回答