理解R中的索引

时间:2014-05-12 04:03:17

标签: r

我只是在学习R,并尝试使用索引来帮助我理解。但是,我尝试了这段代码,并没有得到我期望的结果:

> x 
[1] 3  6  1 NA  2
> x[!is.na(x[x>2])]
[1]  3  6 NA  2

第二个命令的结果不应该是x不是NAGT 2的那些元素吗?换句话说,它应该返回3 6。我对此不了解什么?

2 个答案:

答案 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]