我有一个字符串,我想找到重复的字母。例如,
+---+---+---------------+-------------+
| _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
答案 0 :(得分:5)
您可以在基数R中合并strsplit
和anyDuplicated
以接近您想要的内容。
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