如何才能最好地检查向量中的任何字符串是否包含在列表中每个矩阵的矩阵的特定列中?

时间:2018-01-19 08:08:42

标签: r function apply text-processing

我在R中编写一个小脚本来检查电子邮件地址是否具有有效的域扩展名。我已经读入并向量化了当前有效扩展名的文件,例如com,英国,商业等等。比方说吧:

valid_domain_extensions <- c('com', 'biz', 'de', 'uk')

然后我得到了一份包含10万条捕获电子邮件的矩阵列表,这些电子邮件是故意以混淆方式写的,例如: name [at] domain / dot / biz。矩阵来自str_match_all正则表达式模式,子组为列。

(编辑添加到这里:)

因此输入将是一个如下所示的矩阵列表:

           [,1]                  [,2]  [,3]    [,4]          [,5]  [,6]
[1] name at stackoverflow dot com name    at   stackoverflow   dot  com

我想要做的是检查所有100,000个子分组列(即,从我的输入列表中捕获域扩展名的所有[,6] s,看它们是否相等,或者至少有一个来自域扩展矢量的字符串,用于验证。然后吐出规范化的地址。

有没有比我在这里尝试的R-otic方式更好?它有效,但看起来有点笨重。

validationFunction <- function(x){

y <- x[,6]
z <- any((sapply(y, grepl, valid_domain_extensions))) # valid_domain_extensions is a long vector
if (z){
    return(paste(x[,2],'@', x[,4], '.', x[,6], sep = "", collapse = NULL))
} else {
    return("Invalid Email Address")
}

}

final_list_of_emails <- lapply(tokenized_rough_emails, validationFunction)

print(final_list_of_emails)

感谢。

0 个答案:

没有答案