Re: [問題] 多重選擇的 grep

看板R_Language作者 (天)時間9年前 (2016/10/12 18:50), 編輯推噓0(002)
留言2則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《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
文章代碼(AID): #1N_XLvPd (R_Language)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1N_XLvPd (R_Language)