我的环境中只有一个对象:
> 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
。