x[is.na(x)]在R中做什么?

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定义为:

> 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
的向量元素。您可以自己玩这个--do
x
[]
操作符选择
x
的一个子集。例如,
x[1:4]
返回
x
的前四个元素。当传递一个逻辑向量时,它返回向量为
TRUE
x
的所有元素。因此
x[is.na(x)]
返回
x
na
的所有元素。相反,
x[!is.na(x)]
将返回
x
的所有非
na
元素。当通过逻辑向量对向量进行索引时,它将返回索引为
TRUE
的向量元素。您可以自己玩这个--do
x
[]
操作符选择
x
的一个子集。例如,
x[1:4]
返回
x
的前四个元素。当传递一个逻辑向量时,它返回向量为
TRUE
x
的所有元素。因此
x[is.na(x)]
返回
x
na
的所有元素。相反,
x[!is.na(x)]
将返回
x
的所有非
na
元素。当通过逻辑向量对向量进行索引时,它将返回索引为
TRUE
的向量元素。您可以自己玩这个--do
x
[]
操作符选择
x
的一个子集。例如,
x[1:4]
返回
x
的前四个元素。当传递一个逻辑向量时,它返回向量为
TRUE
x
的所有元素。因此
x[is.na(x)]
返回
x
na
的所有元素。相反,
x[!is.na(x)]
将返回
x
的所有非
na
元素。当通过逻辑向量对向量进行索引时,它将返回索引为
TRUE
的向量元素。您可以自己玩这个--do
x
[]
操作符选择
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)