2015-05-04 46 views
3

我有一个带有ID(其中一些是用户名,其中一些是电子邮件地址)的记录列表。我想知道有多少电子邮件地址。我想一个简单的方法来做到这一点将计数有多少行包含@符号,但我不能得到一个函数来执行此操作。任何帮助表示赞赏!R - 计数行数w/@符号

样本数据集:

x <- c("[email protected]", "johnnyApple", "[email protected]") 
+0

参见http://stackoverflow.com/questions/19341554/regular-expression-in-base-r-regex-to-identify-email-address –

回答

6

两个答案至今是完全正确的,但如果你我们正在寻找一个电子邮件地址,不太可能出现误报的方法是:

x <- c("[email protected]", "johnnyApple", "[email protected]") 
sum(regexpr(".*@.*\\..*",x) != -1) 
+0

你甚至可以走的更远,需要” .COM “,”.edu“等,尽管这样你就有冒犯的风险。 –

+1

好的想法...虽然更像'sum(regexpr(“。* @。* \\ .. *”,x)!= -1)'可能与OP的期望输出相匹配。类似的方法可以是sum(sub(“。*(@)。* \\ .. *”,“\\ 1”,x)==“@”)' –

1

假设你的数据是df,你可以尝试

length(grep(pattern="@", df$V1)) 
[1] 2