NA的子集如何工作?

问题描述 投票:8回答:1

有人可以用外行语言回答如何使用NA进行索引(子集化)。即使谷歌有一些答案,我想用简单的术语来理解它。

使用单个NA索引矢量(长度> 1)时,为什么它会产生五个缺失值?

> x <- 1:5
> x[NA]
[1] NA NA NA NA NA
r subset na
1个回答
9
投票

来自help("[")

提取时,数字,逻辑或字符NA索引选择未知元素,因此在逻辑,整数,数字,复数或字符结果的相应元素中返回NA,并为列表返回NULL。

“对应元素”是什么意思?如果您了解向量元素的回收,可以理解这一点。 x[NA](这是默认的逻辑NA)在你的例子中实际上被“解释”为x[c(NA, NA, NA, NA, NA)],因为逻辑索引被回收。因此,x的每个元素在子集化期间都有相应的NA,因此(根据上面的引用)NAx的每个元素返回。外行人的语言:对于x的每个元素,我们不知道我们是否想要它。因此,为每个元素返回未知值。

正如@ r2evans所指出的那样:x[NA_integer_]只返回一个NA,因为整数指数不会被回收。外行人的语言:我们想要一个值,但不知道哪一个。因此,返回一个未知值。

© www.soinside.com 2019 - 2024. All rights reserved.