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