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
我想对某个字符串是否包含在另一个字符串(结构化字符串)中进行虚拟编码。例如:
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