2014-05-12 85 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的第三個元素的效果。