【发布时间】:2018-01-23 14:17:33
【问题描述】:
在基于字符列的条件对数据框进行子集化时,R(3.3.3 版)给了我一些意想不到的行为。这是一个例子:
foo <- data.frame(bar = c('a',NA,'b','a'),
baz = 1:4,
stringsAsFactors = FALSE)
foo 看起来像这样:
bar baz
1 a 1
2 <NA> 2
3 b 3
4 a 4
我想得到这个数据框的所有行bar != "a",所以我打电话:
foo[foo$bar != 'a', ]
这会返回:
bar baz
NA <NA> NA
3 b 3
我不明白为什么第二列的第一个条目是NA 而不是2。请帮我解释一下这种奇怪的行为。
【问题讨论】:
-
使用
which:foo[which(foo$bar != 'a'), ]。 -
@nicola 不幸的是,它也没有提供所需的行为,它只返回第 3 行(不返回
bar是NA的行)。