我无法让这个工作。我想要包含" mail"的所有行的子集。我用这个:
Email <- subset(Total_Content, source == ".*mail.*")
我有这样的行:
"snt152.mail.live.com",
"mailing.serviciosmovistar.com",
"blu179.mail.live.com"
但在使用时:&#34;查看(电子邮件)&#34;
我只是得到一个data.frame为空(只看到列)。我不需要&#34; scape&#34;任何元字符,因为我需要&#34;。&#34;意思是&#34;任何特征&#34;和&#34; *&#34; (0次或更多次),对吧?谢谢。
答案 0 :(得分:2)
嗯,不,它没有 - 它不是故意的。你没有传递一个正则表达式来对每一行进行评估,你只需要传递一个字符串;它不知道。和*是正则表达式字符,因为它没有执行正则表达式搜索。它返回所有的行,其中source是文字字符串。 mail。 - 在这种情况下是0行。
你可能想做的事情(我假设这是一个data.frame,在这里)是:
Email <- Total_Content[grepl(x = Total_Content$source, pattern = ".*mail.*"),]
grepl生成一组布尔值,表示Total_Content $ source中的每个条目是否与模式匹配。 Total_Content [boolean_vector,]限制Total_Content的那些行,其中等效的布尔值为TRUE。
答案 1 :(得分:1)
为什么不使用具有逻辑正则表达式功能的子集?
Email <- subset(Total_Content, grepl(".*mail.*", source) )
subset
函数确实创建了一个本地环境,用于评估在&#39;子集&#39;中使用的表达式。 (行目标)或&#39;选择&#39; (列目标)参数。