我使用grep命令来检查列表中是否存在字符串。
a <- list("IK" , "IK /// CHGB ", "IKM" ,"HGIKGF", "IK2" ,"IK2FGH" )我正在尝试使用grep获取包含子字符串"IK“的字符串的索引
grep("IK",a) 给出
[1] 1 2 3 4 5 6我想要获取仅包含"IK“或"IK”后跟单个字符或由/分隔的字符串的索引,例如"IK /// CHGB" , "IK2" and "IKM"。我不打算输出像"HGIKGF" or "IKHGFTR /// BN"这样的字符串的索引。
所需的输出为
[1] 1 2 3 5我想就如何做到这一点征求意见。
Edit1:请注意,我为"IK“匹配的字符串存储在一个列表中。
Matchfor <- list("IK","UK")
for(j in 1:length(Matchfor){
grep(Matchfor[j],a)
}发布于 2018-09-02 21:33:04
稍微扩展一下您的测试用例a以包含一个"UK“示例。
a <- list("IK" , "IK /// CHGB ", "IKM" ,"HGIKGF", "IK2" ,"IK2FGH", "UK")
Matchfor <- c("IK","UK")
MatchPat <- paste0(Matchfor, "\\w?\\b")
lapply(MatchPat, grep, a)
[[1]]
[1] 1 2 3 5
[[2]]
[1] 7稍微解释一下:\\w?允许在主模式(IK或UK)后添加一个字符。\\b表示单词边界-非单词字符或字符串的结尾。
https://stackoverflow.com/questions/52137270
复制相似问题