x[is.na(x)]在R中做什么?
我正在学习教程,其中一个部分的向量x定义为:x[is.na(x)]在R中做什么?,r,vector,indexing,idioms,R,Vector,Indexing,Idioms,我正在学习教程,其中一个部分的向量x定义为: > 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
> 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
本身中去呢?这叫做逻辑索引。这是一个非常普通而简洁的习语
是的,is.na(x)
给出一个与向量长度相同的布尔(“逻辑”)向量
使用该逻辑向量进行索引称为逻辑索引
显然,x[is.na(x)]
访问x中所有na条目的向量,并且完全没有意义,除非您打算将它们重新分配给其他值,例如,输入中值(或任何其他值)
x[is.na(x)]这称为逻辑索引。这是一个非常普通而简洁的习语
是的,is.na(x)
给出一个与向量长度相同的布尔(“逻辑”)向量
使用该逻辑向量进行索引称为逻辑索引
显然,x[is.na(x)]
访问x中所有na条目的向量,并且完全没有意义,除非您打算将它们重新分配给其他值,例如,输入中值(或任何其他值)
x[is.na(x)]这称为逻辑索引。这是一个非常普通而简洁的习语
是,is.na(x)
给出一个与向量长度相同的布尔(“逻辑”)向量
使用该逻辑向量进行索引称为逻辑索引
显然,x[is.na(x)]
访问x中所有na条目的向量,并且完全没有意义,除非您打算将它们重新分配给其他值,例如,输入中值(或任何其他值)
x[is.na(x)]这称为逻辑索引。这是一个非常普通而简洁的习语
是的,is.na(x)
给出一个与向量长度相同的布尔(“逻辑”)向量
使用该逻辑向量进行索引称为逻辑索引
显然,x[is.na(x)]
访问x中所有na条目的向量,并且完全没有意义,除非您打算将它们重新分配给其他值,例如,输入中值(或任何其他值)
x[is.na(x)]当通过逻辑向量对向量进行索引时,它将返回索引为TRUE
的向量元素。您可以自己玩这个--dox[]
操作符选择x
的一个子集。例如,x[1:4]
返回x
的前四个元素。当传递一个逻辑向量时,它返回向量为TRUE
的x
的所有元素。因此x[is.na(x)]
返回x
中na
的所有元素。相反,x[!is.na(x)]
将返回x
的所有非na
元素。当通过逻辑向量对向量进行索引时,它将返回索引为TRUE
的向量元素。您可以自己玩这个--dox[]
操作符选择x
的一个子集。例如,x[1:4]
返回x
的前四个元素。当传递一个逻辑向量时,它返回向量为TRUE
的x
的所有元素。因此x[is.na(x)]
返回x
中na
的所有元素。相反,x[!is.na(x)]
将返回x
的所有非na
元素。当通过逻辑向量对向量进行索引时,它将返回索引为TRUE
的向量元素。您可以自己玩这个--dox[]
操作符选择x
的一个子集。例如,x[1:4]
返回x
的前四个元素。当传递一个逻辑向量时,它返回向量为TRUE
的x
的所有元素。因此x[is.na(x)]
返回x
中na
的所有元素。相反,x[!is.na(x)]
将返回x
的所有非na
元素。当通过逻辑向量对向量进行索引时,它将返回索引为TRUE
的向量元素。您可以自己玩这个--dox[]
操作符选择x
的一个子集。例如,x[1:4]
返回x
的前四个元素。当传递一个逻辑向量时,它返回向量为TRUE
的x
的所有元素。因此x[is.na(x)]
返回x
中na
的所有元素。相反,x[!is.na(x)]
将返回x
的所有非na
元素。
x[is.na(x)] <- median(x, na.rm=T)