即使在r中不满足if语句,也会创建对象



我的环境中只有一个对象:

> y
Error: object 'y' not found
> x
[1]  4 NA NA

当我运行下面的if语句时(if返回FALSE,所以我假设if中的语句没有运行(

if (length(x[!is.na(x)]>1)){
y=rep(NA,length(x[!is.na(x)])-1);
for (i in 1:length(y)){
y[i]=x[!is.na(x)][i+1]-x[!is.na(x)][i]
}}

x保持不变,但y已创建

> y
[1] NA

我本以为找不到名为y的对象。为什么?有没有办法让if语句不运行?

满足您的第一个if语句。此x[!is.na(x)]>1的计算结果已为TRUE,但您可以查看此表达式的长度。由于在R中,即使是具有一个元素的对象也是向量,因此其长度也为1。这里的if(1)1被认为是TRUE,因此if之后的表达式也将运行,从而创建y

最新更新