我只是在学习R,并尝试使用索引来帮助我理解。但是,我尝试了这段代码,并没有得到我期望的结果:
> x
[1] 3 6 1 NA 2
> x[!is.na(x[x>2])]
[1] 3 6 NA 2
第二个命令的结果不应该是x
不是NA
且GT 2
的那些元素吗?换句话说,它应该返回3 6
。我对此不了解什么?
答案 0 :(得分:3)
这应该做你想要的:
x[!is.na(x) & x > 2]
你的命令
x[!is.na(x[x>2])]
首先返回所有x[x>2]
,即
3 6 NA
!is.na(c(3, 6, NA))
TRUE TRUE FALSE
因此x[!is.na(x[x>2])]
具有删除x的第三个元素的效果。
答案 1 :(得分:1)
作为
> !is.na(x[x>2])
[1] TRUE TRUE FALSE
虽然矢量的长度是5,但它会给出
[1] TRUE TRUE FALSE TRUE TRUE
因此,x[c(1,2,4,5)]
是返回
我的方法将是
>x <- x[!is.na(s)]
>x[x>2]
[1] 3 6
我仍在考虑一行代码是否能够完成任务。
好的@ 6pool提供了更好的答案
x[!is.na(x) & x > 2]