2017-06-05 40 views
1

我想虛擬代碼是否一些字符串包含在另一個(這是結構化)。例如:R:提取字符串,如果它是一個列表的元素

player <- c("Michael Jordan", "Steve Kerr", "Michael Jordan", "Toni Kukoc") 

bulls <- c("Jordan, Michael Jeffrey", "Pippen, Scottie; Harper, Ron", 
      "Rodman, Dennis", "Kerr, Steve; Longley, Luc; Kukoc, Toni") 

,並創建一個新的變量(比如,included)如果詞語邁克爾和喬丹存在於bulls[1],史蒂夫克爾在bulls[2]等。上述應該產生TRUE FALSE FALSE TRUE。一般來說,名字和姓氏用逗號分隔,而分號表示單個條目中的多個人。鑑於對象bulls可以包含更長版本的名稱(在本例中爲「Jeffrey」),但是沒有其他方法,我懷疑該解決方案可能需要某種is.element檢查?我想通過一個長長的列表重複這個,最好的方法是什麼?

p.s.我試了stringr動詞,但至今沒有運氣(_view,_extract等)

回答

3

試試這個:

require(stringr) 
mapply(function(x,y) all(x %in% y), 
    str_extract_all(player,"\\w+"),str_extract_all(bulls,"\\w+")) 
#[1] TRUE FALSE FALSE TRUE 
+0

謝謝你,不正是我在更大的數據集通緝。 – rfsrc

相關問題