Re: [問題] 多重選擇的 grep
※ 引述《Edster (Edster)》之銘言:
:
: - 問題: 當你想要問問題時,請使用這個類別
:
: [問題類型]:
:
: 效能諮詢(我想讓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, 複選
:
strs <- c( "./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")
strToFind <- c("mining", "watersurface", "xml")
library(stringr)
outStr <- setdiff(strs, str_subset(strs, paste(strToFind, collapse = "|")))
f <- strs
for(i in c("mining","watersurface","xml")) f = f[grep(i, f, invert = TRUE)]
all.equal(outStr, f) # TRUE
--
R資料整理套件系列文:
magrittr #1LhSWhpH (R_Language) http://tinyurl.com/j3ql84c
data.table #1LhW7Tvj (R_Language) http://tinyurl.com/hr77hrn
dplyr(上) #1LhpJCfB (R_Language) http://tinyurl.com/jtg4hau
dplyr(下) #1Lhw8b-s (R_Language)
tidyr #1Liqls1R (R_Language) http://tinyurl.com/jq3o2g3
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.235.43.110
※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1476269433.A.667.html
→
10/12 20:44, , 1F
10/12 20:44, 1F
→
10/12 20:44, , 2F
10/12 20:44, 2F
討論串 (同標題文章)
R_Language 近期熱門文章
PTT數位生活區 即時熱門文章
18
34