R:如果它是列表的元素,则提取字符串

R: Extracting string if it is an element of a list

我想对某个字符串是否包含在另一个字符串(结构化字符串)中进行虚拟编码。例如:

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 等)

试试这个:

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