选择包含特定字符的字符串列表项目
问题描述:
我收到了一个名称列表。选择包含特定字符的字符串列表项目
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中的变量。 我正在寻找类似的用于列表的东西。
答
这是你想要的吗?
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这一个? –
答
这里是正则表达式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"
您共享的内容是一个矢量,而不是一个列表。 –