的另一种方法是治疗所述第一列的正则表达式的搜索第二列,并利用“stringi”包来促进向量化的模式搜索。
df <- structure(list(Colors1 = c("Green, Blue, Purple", "Green, Blue",
"Green, Blue, Purple"), Colors2 = c("Green, Purple", "Green, Purple",
"Orange, Red")), .Names = c("Colors1", "Colors2"), row.names = c("2",
"21", "3"), class = "data.frame")
df
# Colors1 Colors2
# 2 Green, Blue, Purple Green, Purple
# 21 Green, Blue Green, Purple
# 3 Green, Blue, Purple Orange, Red
library(stringi)
stri_extract_all_regex(df$Colors2, gsub(", ", "|", df$Colors1))
# [[1]]
# [1] "Green" "Purple"
#
# [[2]]
# [1] "Green"
#
# [[3]]
# [1] NA
stri_count_regex(df$Colors2, gsub(", ", "|", df$Colors1))
# [1] 2 1 0
基本上,我所做的有使用gsub
的“COLORS1”列转换为看起来像"Green|Blue|Purple"
代替"Green, Blue, Purple"
和使用正则表达式搜索模式,由于在每个搜索模式“弦我“功能,我上面演示。
谢谢,它工作。这份宝贵的声明对我来说很难理解 - 任何进一步的解释都将不胜感激。 – user2980491
更具体地说,为什么需要sapply?为什么代码长度(intersect(col1,col2))不起作用? – user2980491