如何将值分配给is.na()的输出?

时间:2019-06-29 12:24:34

标签: r variable-assignment na assignment-operator

以下与R语言有关。

x1 <- c(1, 4, 3, NA, 7)
is.na(x1) <- which(x1 == 7)

我不理解,最后一行中的LHS为您提供了布尔向量,RHS是一个值(索引,其中x == 7,在这种情况下为5)。那么给布尔向量赋值为5是什么意思?

1 个答案:

答案 0 :(得分:0)

文档中的

is.na返回:

  

应用于原子向量的is.na的默认方法返回一个与其参数x长度相同的逻辑向量,对于标记为NA的元素为TRUE,对于数字或复数向量则为NaN,否则为FALSE。 / p>

因此,通过建立一个逻辑向量(实际上,您实际上是在说索引是TRUE的地方,它应该是NA

通过将这些索引与which中的相应索引进行“匹配”,您可以将NA处的相应索引变成FALSE,从而进行更改。

将其付诸实践:

这是is.na(x1)的输出:

is.na(x1)
[1] FALSE FALSE FALSE  TRUE FALSE

which(x==7)的相应输出:

which(x1 == 7)
[1] 5

结合起来,位置5的元素现在将成为NA,因为它已被赋予逻辑is.na()并返回TRUE

is.na(x1) <- which(x1 == 7)
 x1
[1]  1  4  3 NA NA

上面的方法将第一个索引转换为另外两个NA的{​​{1}}和appends,从而使索引7和NA

最好通过以下方式查看:

NA

与文档中的此示例比较:

is.na(x1) <- c(1,7)
 x1
[1] NA  4  3 NA  7 NA NA

从上面可以明显看出,c(2,4)遵循(xx <- c(0:4)) is.na(xx) <- c(2, 4) xx [1] 0 NA 2 NA 4 中的原始索引,因此其余部分变为xx s。