2014-05-12 52 views
0

我刚刚学习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

'x [!is.na(x)&x> 2]' – jenesaisquoi

回答

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] 
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的第三个元素的效果。