【发布时间】:2015-11-03 19:32:55
【问题描述】:
我有一个参考表,其中有人们的姓名和属性(坏电子邮件)
我希望根据下面的人名对表格进行子集化
我尝试了两种方法来解决这个问题
# Returns nothing
subset(bad.email, User.Name %in% c('John'))
filter(bad.email, User.Name %in% 'John')
# returns what im looking for
subset(bad.email, grepl("John", User.Name ))
filter(bad.email, grepl("John", User.Name ))
谁能解释为什么会这样?
最后,我想用参考表中的一列替换 john,但我只想先了解一下这个概念
【问题讨论】:
-
这意味着您在列中有前导/滞后空间。试试
library(stringr); bad.email$User.Name <- str_trim(bad.email$User.Name)你的代码应该可以工作 -
嗨@akrun。我之前尝试过这个,并且在导入文件时我也设置了 strip.white=TRUE 所以我不确定为什么什么都没有返回
-
如果没有可重现的例子,我也不确定。这是根据你提到的猜测。
-
感谢您抽出宝贵的时间,作为一种解决方法,我想我可以将参考表折叠成一个字符串,根据“|”将其拆分并将其输入到 grep 中。
-
%in%返回完全匹配,而grepl返回TRUE,只要某个字符串包含此特定模式。不同的东西。比较"a" == "aa" ; grepl("a", "aa")