为什么';s使用下面的R语句返回NA

为什么';s使用下面的R语句返回NA,r,R,我遇到了如下的简单代码,我不知道为什么输出返回NA。请帮我理解这个代码 代码: x=c(1,2,3,4) k = x+2 [(!is.na(x)) & x>0] 输出: [1] 3 NA NA NA 索引是在表达式“2”上进行的,而不是在“x+2”上。你需要 k = (x+2) [(!is.na(x)) & x>0] 要获得您期望的结果。作为简化,请参见2[(!is.na(x))&x>0]的输出。。这与2[c(真、真、真、真)]相同。由于2是长度为1的向量,因

我遇到了如下的简单代码,我不知道为什么输出返回NA。请帮我理解这个代码

代码:

x=c(1,2,3,4)
k = x+2 [(!is.na(x)) & x>0]
输出:

[1]  3 NA NA NA

索引是在表达式“2”上进行的,而不是在“x+2”上。你需要

k = (x+2) [(!is.na(x)) & x>0]

要获得您期望的结果。

作为简化,请参见
2[(!is.na(x))&x>0]的输出。
。这与
2[c(真、真、真、真)]
相同。由于
2
是长度为1的向量,因此额外的插槽中填充了NAs。而
(x+2)[(!is.na(x))&x>0]
将返回
[1]3 4 5 6
作为简化,请参见2[(!is.na(x))&x>0]的输出。这与2[c(真,真,真,真)]相同。由于2是长度为1的向量,因此额外的插槽中填充了NAs。。它起作用了