作者Edster (Edster)
看板R_Language
标题[问题] 多重选择的 grep
时间Wed Oct 12 16:39:13 2016
- 问题: 当你想要问问题时,请使用这个类别
[问题类型]:
效能谘询(我想让R 跑更快)
[软体熟悉度]:
请把以下不需要的部份删除
开发者(有撰写R 的套件经验)
[问题叙述]:
一个简单的问题
一堆字串中,想要撷取/筛选复数条件的字串
例如
"./zw1_agriculture.txt"
"./zw1_agriculture.txt.xml"
"./zw1_bareland.txt"
"./zw1_bareland.txt.xml"
"./zw1_built_up.txt"
"./zw1_built_up.txt.xml"
"./zw1_forest.txt"
"./zw1_forest.txt.xml"
"./zw1_mining.txt"
"./zw1_mining.txt.xml"
"./zw1_watersurface.txt"
"./zw1_watersurface.txt.xml"
等等
只有下面的方法吗?
for(i in c("mining","watersurface","xml")) f = f[grep(i, f, invert = TRUE)]
我试着用lapply,但最後还需要取交集,不算好用,不如用for.
f = lapply(c("mining","watersurface","xml"),
FUN=function(x){f = f[grep(x, f, invert = TRUE)]; return(f)})
[关键字]:
grep, 复选
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.112.64.48
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1476261555.A.4FB.html
1F:推 clansoda: 是只要达成其中一个就可以吗? 我之前是用|串起来 10/12 17:02
2F:→ clansoda: 一个OR的概念就可以用一行写完 10/12 17:03
3F:→ Edster: 欢迎,只要是更简单的写法。 10/12 17:09
4F:推 carl090105: 用正则有试过吗 10/12 19:32
5F:→ Edster: strs[grep(paste(strToFind, collapse = "|"), strs, 10/12 20:41
6F:→ Edster: invert = T)] 10/12 20:42
7F:→ Edster: 感谢提点,原来还有这种做法。 10/12 20:42