我想虚拟代码是否包含另一个字符串(结构化)。例如:
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等)
答案 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