R 选择包含特定字符的字符串列表项

R 选择包含特定字符的字符串列表项,r,R,我有一张名单 l1 <- rep(paste("Session", 1:6, sep=""), each=4) l2 <- rep(paste("ID", 1:4, sep=""), 6) list <- paste(l1, l2, sep="") l1这就是你想要的吗 list[grepl("Session(1|2|3|4)ID", list)] [1] "Session1ID1" "Session1ID2" "Session1ID3" "Session1ID4" "Ses

我有一张名单

l1 <- rep(paste("Session", 1:6, sep=""), each=4)
l2 <- rep(paste("ID", 1:4, sep=""), 6)
list <- paste(l1, l2, sep="")

l1这就是你想要的吗

list[grepl("Session(1|2|3|4)ID", list)]
[1] "Session1ID1" "Session1ID2" "Session1ID3" "Session1ID4" "Session2ID1" "Session2ID2" "Session2ID3" "Session2ID4"
[9] "Session3ID1" "Session3ID2" "Session3ID3" "Session3ID4" "Session4ID1" "Session4ID2" "Session4ID3" "Session4ID4"

这里有另一个带有regex lookarounds的选项,可以匹配“Session”,后面跟数字1-4,而后面不跟任何数字(
(?![0-9])


您共享的是一个向量,而不是一个列表。只是一个关于命名的注释:避免使用为函数保留的名称,尤其是像
list
这样常见的名称。这让调试变得很困难Hanks@DavidArenburg这个?
grep("Session[1-4](?![0-9])", c(list, "Session10ID"), value = TRUE, perl = TRUE)
#[1] "Session1ID1" "Session1ID2" "Session1ID3" "Session1ID4" "Session2ID1" "Session2ID2" "Session2ID3" "Session2ID4" "Session3ID1" "Session3ID2"
#[11] "Session3ID3" "Session3ID4" "Session4ID1" "Session4ID2" "Session4ID3" "Session4ID4"