如果我只想在变量未定义的情况下分配变量,这是最简洁的方法,还是有更短的语法来表示这个想法?
if (!exists('t')) t = 1
例如,在 中C#
,可以写
int y = x ?? -1;
表达y
应该分配给x
除非x
为空的想法。
如果我只想在变量未定义的情况下分配变量,这是最简洁的方法,还是有更短的语法来表示这个想法?
if (!exists('t')) t = 1
例如,在 中C#
,可以写
int y = x ?? -1;
表达y
应该分配给x
除非x
为空的想法。
您可以将自己的中缀运算符拼接在一起:
`%<-%` <- 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
检查向量是否为空的一个好方法是使用长度函数。不过,这可能与您的具体问题无关。
> t<-NULL
> length(t)
[1] 0
> t<-1
> length(t)
[1] 1