2016-12-06 109 views
0

我收到了一个名称列表。选择包含特定字符的字符串列表项目

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中有>> select(contains(“Session1”|“Session2”))< <它用于选择data.frames中的变量。 我正在寻找类似的用于列表的东西。

+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" 
+0

谢谢@DavidArenburg这一个? –

0

这里是正则表达式lookarounds另一种选择,以配合“会话”,其次是数字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" 
相关问题