R:查找字符串中的UNIQUE字符数

Mik*_*son 2 regex r

我希望在用户提供的数据集中找到真实的v.伪造识别号码(想想社会保障#,电话号码等),因此很麻烦.

一些用户故意输入虚假信息,例如"idk","fu",123456或222222.

我可以很容易地过滤掉这些单词,但是我希望得到更多的信息并抓住更多明显错误的信息.

从概念上讲,我想删除几乎所有数字都是唯一的数字,几乎每个数字都相同.因此将删除2220222和123451之类的数字.

这需要运行得相当快,而不是一个巨大的内存占用,因此在每个条目上执行内部循环并不是真的可行.我希望/认为必须有一个聪明的方式与正则表达式来做到这一点.

这是我想要发生的事情的稻草人:

filter.func(my.str.array, 2, 2)
### Returns a logical array of length "my.str.array" with "TRUE" meaning that
### it would not be filtered, and "FALSE" that a filtering rule was broken

### the "2" and "2" are, respectively:
### First "2":  the min # of acceptable non-unique values (e.g., to catch 123456)
### Second "2": the min # of acceptable non-duplicated values (to catch 222222)
Run Code Online (Sandbox Code Playgroud)

谢谢!

MrF*_*ick 5

在这里,我用strsplit一个词分成字符; 然后我table用来计算角色.

filter.func<-function(x, mindup=2, mindiff=2) {
    spt<-lapply(strsplit(x,""), table)
    sapply(spt, function(x) {sum(x>1)>=mindup & sum(x>0)>=mindiff})
}

filter.func(c("22222","123456","234356"),2,2)
# [1] FALSE FALSE  TRUE
Run Code Online (Sandbox Code Playgroud)

可能更好地测试更积极和消极的价值观.