在R中使用%in%筛选行出现无结果错误的问题排查
问题原因及解决办法
为什么会返回空数据集?
问题出在你用了整个tibble类型的Key去做%in%匹配,但%in%运算符要求右侧必须是单纯的向量(比如一串字符、一串数字),而不是带列名的数据框结构。当你直接传入整个Key时,R会把它当成复杂的列表对象,和column里的单个字符元素比对,自然找不到任何匹配项,所以返回空数据集。
你可以跑下面的代码直观看到差异:
# 用整个tibble比对,结果是FALSE "S1" %in% Key # 提取列向量后比对,结果是TRUE "S1" %in% Key$Key
修正后的代码
有两种简单的修正方式:
方式1:直接提取tibble中的列向量
Data %>% filter(column %in% Key$Key)
方式2:用pull()函数提取向量(更符合tidyverse风格)
Data %>% filter(column %in% pull(Key))
修正后运行会得到预期的结果:
# A tibble: 2 × 3 column Val1 Val2 <chr> <dbl> <dbl> 1 S1 11 44 2 S2 22 55
内容的提问来源于stack exchange,提问作者Rover Eye
相关产品推荐
相关产品推荐

