我剛剛學習R,並嘗試通過索引來解決問題以幫助我理解。但是,我試試這個代碼,並沒有得到我的期望:瞭解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
。我對此不甚瞭解?
我剛剛學習R,並嘗試通過索引來解決問題以幫助我理解。但是,我試試這個代碼,並沒有得到我的期望:瞭解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
。我對此不甚瞭解?
作爲
> !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]
這應該做你想要什麼:
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的第三個元素的效果。
'x [!is.na(x)&x> 2]' – jenesaisquoi