【问题标题】:DPLYR filter- why do i get error with object? Error in filter_impl(.data, quo) : Evaluation error: object 'Email' not foundDPLYR 过滤器 - 为什么我会收到对象错误? filter_impl(.data, quo) 中的错误:评估错误:找不到对象“电子邮件”
【发布时间】:2018-12-21 22:26:13
【问题描述】:

我正在尝试过滤包含域“gmail”的电子邮件帐户

事情是这样的:

library(dplyr)
GMAIL<- read.csv(file.choose())
GMAIL <- data.frame(lapply(GMAIL, as.character), stringsAsFactors=FALSE)
GMAIL2<-GMAIL
GMAIL2 %>%
filter(Email, contains("gmail"))

我得到的错误是: filter_impl(.data, quo) 中的错误: 评估错误:找不到对象“电子邮件”。

而我的数据“GMAIL”只有一列名为“Email”

我也想用过滤结果做一个新的数据集,我怎样才能做到这一点?

提前谢谢

【问题讨论】:

  • 嗨,我还尝试了以下 >library(stringr) >GMAIL2 %>% filter(str_detect(Email, "gmail")) 并出现相同的错误:-filter_impl(.data,现状):评估错误:找不到对象“电子邮件”。
  • contains 不是filter 中使用的动词。也许你的意思是GMAIL2 %&gt;% filter(grepl("gmail", Email))?我建议dplyr.tidyverse.org 上的一些教程/文档来微调您使用列查找动词的位置,例如contains,以及可以在filter 中使用的内容。
  • 请始终发布reproducible questions 互联网上没有其他人可以访问您在file.choose() 之后选择的任何文件>>>whatever.csv
  • 嗨,好的,我会在下一个查询中尽力而为!

标签: r filter dplyr contains


【解决方案1】:

过滤结果并将结果保存到新的df:

filtered_gmail <- GMAIL2 %>%
  filter(grepl("gmail", Email))

【讨论】:

  • 嗨@feebarscevicius!感谢您的回复。我尝试了您的代码,但仍然显示相同的错误:filter_impl(.data, quo) 中的错误:评估错误:找不到对象“电子邮件”。
  • 确实,如果只有contains 是问题,我不会想到这个错误。 filter 的第二个参数是 ...,如果它试图将字符变量评估为逻辑值,我猜它会得到 NA,这可能会导致不同的错误。但是,马切洛,你确定没有错字吗?您的 col 名称是“Email”,而不是“email”或其他名称?
  • 你能把colnames(GMAIL2)的输出贴出来吗?
  • 嗨!当然:> colnames(GMAIL2) [1] "ï..Email" 我明白 "ï.." 没有任何关系....谢谢您的回复!
  • 嗨!尽管它被称为“电子邮件”,但似乎该对象必须被引用为“ï..Email”>filtered_gmail % > filter(grepl("gmail", ï..Email)) 感谢大家的回复!
【解决方案2】:

您可以使用select 代替filter

library(dplyr)
GMAIL<- read.csv(file.choose())
GMAIL <- data.frame(lapply(GMAIL, as.character), stringsAsFactors=FALSE)
GMAIL2<-GMAIL
GMAIL2 %>%
select(contains("gmail"))

【讨论】:

  • 嗨尼尔森!我尝试了您的解决方案,但它做出了一个非常奇怪的选择,最终结果是一个非常短的电子邮件列表,但由 gmail、hotmail 和更多域混合在一起!有线,嗯?
  • 对不起,我没有样本数据,所以无法真正测试。
猜你喜欢
  • 2019-07-27
  • 2019-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-09
相关资源
最近更新 更多