-1
我正在關注的swirl教程,和部分中的一個具有向量x定義爲:x [is.na(x)]在R中做什麼?
> x
[1] 1.91177824 0.93941777 -0.72325856 0.26998371 NA NA
[7] -0.17709161 NA NA 1.98079386 -1.97167684 -0.32590760
[13] 0.23359408 -0.19229380 NA NA 1.21102697 NA
[19] 0.78323515 NA 0.07512655 NA 0.39457671 0.64705874
[25] NA 0.70421548 -0.59875008 NA 1.75842059 NA
[31] NA NA NA NA NA NA
[37] -0.74265585 NA -0.57353603 NA
然後,當我們輸入x[is.na(x)]
我們得到了所有NA
的
> x[is.na(x)]
[1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
的矢量爲什麼會發生?我的困惑是,is.na(x)
本身返回一個長度爲40的矢量,其中True
或False
位於矢量的每個條目中,具體取決於該條目是否爲NA
。爲什麼使用x []將這個向量「包裝」突然子集到NA
的本身?
當您通過邏輯向量爲向量編制索引時,向量的索引爲「TRUE」的元素。你可以自己玩這個遊戲 - 做'x < - c(1,2,3)',然後做例如'x [c(T,F,T)]','x [c(F,F ,F)]'等。 – josliber
'[]'操作符選擇'x'的子集。例如,'x [1:4]'返回'x'的前四個元素。當傳遞一個邏輯向量時,它將返回所有向量爲「TRUE」的'x'的元素。所以'x [is.na(x)]'返回''''''NA'的所有元素。相反,'x [!is.na(x)]'會返回'x'的所有非''''元素。 –