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

时间:2016-12-06 10:04:30

标签: r

我有一份名单。

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

使用真实数据,列表要复杂得多;) 如何从此列表创建一个新列表,其中仅包含会话1-4中的那些项目?

在dplyr中有&gt;&gt; select(包含(“Session1”|“Session2”))&lt;&lt;用于在data.frames中选择变量。 我正在寻找类似用于列表的东西。

2 个答案:

答案 0 :(得分:1)

这是你想要的吗?

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"

答案 1 :(得分:0)

这是另一个选项,正则表达式看起来与“Session”匹配,后跟数字1-4,后面没有任何数字((?![0-9])

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"