【发布时间】:2016-02-04 21:53:21
【问题描述】:
在使用 head() 检查数据帧并以某些列为条件时,我偶尔会感到困惑。包含一些 NA 的列会出现此问题。例如
df <- data.frame(A = rep(1:10, 10), B = c(NA, NA, runif(98)))
这两个工作正常:
head(df)
head(df[df$A == 1,])
但是这个返回一个奇怪的输出:
head(df[df$B > 0.5,])
A B
NA NA NA
NA.1 NA NA
4 4 0.6452069
5 5 0.5923567
6 6 0.7883836
10 10 0.5252390
如何省略这些行,哪些数字会用 NA 标记?还是有其他解决方法?
【问题讨论】:
-
这不是
head的问题。这是您对df进行子集化的方式。 -
df$B >0.5返回NA, NA, FALSE, TRUE, ...。根据?'[':提取时,数字、逻辑或字符 NA 索引选择未知元素,因此在逻辑、整数、数字、复数或字符结果的相应元素中返回 NA,对于列表返回 NULL 。这就是为什么head的前两行是“好奇”的。