2015-09-15 72 views
0

從給定的帶有文本列的數據框中,我需要包含以前存儲在向量(或第二個data.frame列)中的字符子字符串的子集行。R - 帶子字符串搜索的數據框架子集

Example data: 

require(stringi) # Used for generate random string 
set.seed(1) 
df <- as.data.frame(cbind(seq(from = 1, to = 10, by = 1), stri_rand_strings(10, 5))) 

df 

    V1 V2 
1 1 GNZuC 
2 2 twed3 
3 3 CAgNl 
4 4 UizNm 
5 5 vDe7G 
6 6 N0NrL 
7 7 TbUBp 
8 8 fn6iP 
9 9 oemYW 
10 10 m1Tjg 

如果我保存搜索字符串的向量顯示

tofind <- c("AgN", "bUB") 

至於結果,我需要獲取以下data.frame

V1 V2 
1 3 CAgNl 
2 7 TbUBp 

感謝所有幫助

回答

0

如果你改變你的tofind載體(大寫字母N),這個可以工作:

tofind <- c("AgN", "bUB") 

df[grep(paste(tofind, collapse = "|"), df$V2),] 

    V1 V2 
3 3 CAgNl 
7 7 TbUBp 

而且使用subset功能:

subset(df, grepl(paste(tofind, collapse = "|"), V2)) 

在這裏,您使用grepl代替grep因爲subset功能要求不是數字

+0

邏輯向量它做工精細也是真實的大數據集。我的僵局就解決了。這個問題的一個擴展:是否可以使用子集聲明獲得等效的解決方案? – Tiziano

+0

是的,你去!請參閱更新 –

+0

雖然詳細查找更容易使用子集語法。 我已經解決了我的錯誤,爲更多的讀者。感謝所有。 – Tiziano