在字符串中查找重复的字母

时间:2017-01-19 20:40:06

标签: r regex

我有一个字符串,我想找到重复的字母。例如,

+---+---+---------------+-------------+
| _1| _2|             _3|           _4|
+---+---+---------------+-------------+
|  a|  1|{"_1":2,"_2":3}|["1","2","3"]|
+---+---+---------------+-------------+

我想创建一个向量A <- c('A-B-A-B-C', 'A-B-C-D', 'A-B-A-C-D-E-F', 'A-B-A-B') ,如果没有重复的字母,则取值为0,否则为1。

B

1 个答案:

答案 0 :(得分:5)

您可以在基数R中合并strsplitanyDuplicated以接近您想要的内容。

sapply(strsplit(A, "-"), anyDuplicated, fixed=TRUE)
[1] 3 0 3 3

anyDuplicated返回重复值的第一个索引。正如@ rich-scriven所述,将fixed=TRUE添加到strsplit函数应该会提高效率,因为它会进行文字映射(不涉及正则表达式)

您可以将其包含在pmin中以获得所需的结果:

pmin(sapply(strsplit(A, "-", fixed=TRUE), anyDuplicated), 1)
[1] 1 0 1 1

或@ rich-scriven笔记,使用sign转换值。

sign(sapply(strsplit(A, "-", fixed=TRUE), anyDuplicated))
[1] 1 0 1 1