R:如果字符串是

时间:2017-06-05 20:00:54

标签: r string stringr

我想虚拟代码是否包含另一个字符串(结构化)。例如:

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]中的单词Michael和Jordan,bulls[2]中的Steve Kerr等。上面应该生成TRUE FALSE FALSE TRUE 。一般而言,名称和姓氏用逗号分隔,而分号表示单个条目中有多个人。鉴于对象bulls可以使用更长版本的名称(&#34; Jeffrey&#34;在这种情况下),但不是相反,我怀疑解决方案可能需要某种is.element检查?我想在一个长列表中迭代这个,最好的方法是什么?

P.S。我尝试了几个stringr动词,但到目前为止没有运气(_view,_extract等)

1 个答案:

答案 0 :(得分: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