当我检查一列是否包含特定值,另一列是否包含不同值时,为什么打印到RStudio控制台的结果数据框之间显示多个<NA>
值?
我想在每种情况下都看到整行,因此选择了以下方法(而不是which(geochats$origin_city == "new york" & geochats$end_city == "manassas")
会列出匹配行的行号)。
在这种情况下,我希望看到打印到控制台的两行,但我得到的行更多,大部分显示为<NA>
。
为什么会这样?
> geochats[geochats$origin_city == "new york" & geochats$end_city == "manassas", ]
partid user origin_city end_city associate
2893 2aadb2ef-c558-4902-a75b-7e5ca62b2079 WB7iSYU8yR new york manassas CefPn1OTZF
NA <NA> <NA> <NA> <NA> <NA>
NA.1 <NA> <NA> <NA> <NA> <NA>
NA.2 <NA> <NA> <NA> <NA> <NA>
NA.3 <NA> <NA> <NA> <NA> <NA>
NA.4 <NA> <NA> <NA> <NA> <NA>
NA.5 <NA> <NA> <NA> <NA> <NA>
NA.6 <NA> <NA> <NA> <NA> <NA>
NA.7 <NA> <NA> <NA> <NA> <NA>
NA.8 <NA> <NA> <NA> <NA> <NA>
NA.9 <NA> <NA> <NA> <NA> <NA>
NA.10 <NA> <NA> <NA> <NA> <NA>
NA.11 <NA> <NA> <NA> <NA> <NA>
NA.12 <NA> <NA> <NA> <NA> <NA>
NA.13 <NA> <NA> <NA> <NA> <NA>
NA.14 <NA> <NA> <NA> <NA> <NA>
15649 e5af7b89-e38b-463f-a1ac-2e64d2e1bd24 WB7iSYU8yR new york manassas CefPn1OTZF
NA.15 <NA> <NA> <NA> <NA> <NA>
NA.16 <NA> <NA> <NA> <NA> <NA>
NA.17 <NA> <NA> <NA> <NA> <NA>
NA.18 <NA> <NA> <NA> <NA> <NA>
答案 0 :(得分:0)
如评论中所述,如果缺少值,则逻辑条件不适用于子集。因此,我们可以使用which()
限制条件的输出。
geochats[which(geochats$origin_city == "new york" & geochats$end_city == "manassas"), ]
一个简单的例子:
x <- c(NA, 1, 2)
在这里,条件x > 1
输出NA FALSE TRUE
,因为无法为NA
值求值。 which
现在选择所有TRUE
值在输出矢量中的位置,因此可以在忽略NA
时用于子集:
> x[which(x > 1)]
[1] 2