我在R中工作。我有很长的字符串向量。在此向量中,我想找到类似“ ABC23-ABC54”的字符串。确切地说,在“-”前后具有相同字符且数字不同的字符串。
到目前为止,我可以提取中间带有“-”的字符串,并分配part1 =“ ABC23”和part2 =“ ABC54”。下一步将是通过删除数字部分来匹配字符部分,但不知道字符和数字部分的确切形式和长度。
如何在R中做到这一点?
谢谢!
答案 0 :(得分:0)
删除数字,使用read.table
将剩下的两个字段读入两列并进行比较。
ok <- with(read.table(text = gsub("\\d", "", s), sep = "-", as.is = TRUE), V1 == V2)
ok
## [1] FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE
s[ok]
## [1] "ABC12-ABC123" "ABC12-ABC1" "ABC12-ABC" "ABC12-ABC012"
我们使用了以下来自问题下方评论的测试输入。
s <- c("ABC12-ABCD13", "ABC12-AB34", "ABC12-AB12", "ABC12-ABCD12", "ABC12-ABC123",
"ABC12-ABC1", "ABC12-ABC", "ABC12-ABC012")