替换gsub以从另一个数据帧替换固定字符串

时间:2016-10-18 06:49:05

标签: r string gsub email-validation

我有一个由多个不干净的电子邮件地址组成的数据框,例如

1)abc @ gmailcom 2)def@yahoo.commm 3)fgh@yahoo.coin 4)xyz @ gmail

我想使用gsub来清理这些电子邮件,使用另一个包含模式和替换的数据框,例如,

  • 如果找到的模式是' comm'他们用' com'
  • 取代
  • 如果找到的图案是' .coin'他们用' .co.in'
  • 取而代之
  • 如果找到的模式是' gmail'然后替换为' gmail.com' (如上面的案例4,但在这里我不想替换abc@gmail.com类型的电子邮件)

有人可以建议使用gsub正则表达式。

1 个答案:

答案 0 :(得分:1)

创建list个模式并替换并使用gsubfn

library(gsubfn)
lst <- list(gmailcom = "@gmail.com", yahoo.commm = "@yahoo.com", 
              yahoo.coin = "@yahoo.co.in", gmail = "@gmail.com")
gsubfn("@(.*)", lst , str1)
#[1] "abc@gmail.com"   "def@yahoo.com"   "fgh@yahoo.co.in" "xyz@gmail.com"  

数据

str1 <- c("abc@gmailcom", "def@yahoo.commm", "fgh@yahoo.coin", "xyz@gmail")