的另一種方法是治療所述第一列的正則表達式的搜索第二列,並利用「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