在R中提取字符串的字符部分
Extracting the character part of a string in R
我在 R 中工作。我有一个很长的字符串向量。在这个向量中,我想找到像 "ABC23-ABC54" 这样的字符串。准确地说,在“-”前后具有相同字符和不同数字的字符串。
到目前为止,我可以提取中间带有“-”的字符串并分配 part1="ABC23" 和 part2="ABC54"。下一步是通过删除数字部分来匹配字符部分,但不知道字符和数字部分的确切形式和长度。
我如何在 R 中做到这一点?
谢谢!
删除数字,使用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")
我在 R 中工作。我有一个很长的字符串向量。在这个向量中,我想找到像 "ABC23-ABC54" 这样的字符串。准确地说,在“-”前后具有相同字符和不同数字的字符串。
到目前为止,我可以提取中间带有“-”的字符串并分配 part1="ABC23" 和 part2="ABC54"。下一步是通过删除数字部分来匹配字符部分,但不知道字符和数字部分的确切形式和长度。
我如何在 R 中做到这一点?
谢谢!
删除数字,使用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")