我想知道是否有一种快速的方法可以在两个文本字符串之间找到有方向的交集。
t1 <- "I have achieved my goals over the past 20 years and look forward for my next chalanges"
t2 <- " have achieved goals and look my chalanges some other words bla bla"t1 isContainedIn t2将返回7,因为在t1中使用的7个单词也在t2中。另外,t1和t2是数据框架中的2列,因此我需要将该函数应用于整个数据框架,并将结果列附加到原始数据框架。这就是我的数据框架“data.selected”的样子:
keywords title
1 Samsung UN48H6350 48" Samsung UN48H6350 48" Full 1080p Smart HDTV 120Hz with Wi-Fi +$50 Visa Gift Card
2 Samsung UN48H6350 48" Samsung UN48H6350 48" Full HD Smart LED TV -Bundle- (See Below for Contents)
3 Samsung UN48H6350 48" Samsung UN48H6350 48" Class Full HD Smart LED TV -BUNDLE- See below Details
4 Samsung UN48H6350 48" Samsung UN48H6350 48" Full HD Smart LED TV With BD-H5100 Blu-ray Disc Player
5 Samsung UN48H6350 48" Samsung UN48H6350 48" Smart 1080p Clear Motion Rate 240 LED HDTV
6 Samsung UN48H6350 48" Samsung UN48H6350 - 48-Inch Full HD 1080p Smart HDTV 120Hz with Wi-Fi
7 Samsung UN48H6350 48" Samsung 6350 Series UN48H6350 48" 1080p HD LED LCD Internet TV NEW
8 Samsung UN48H6350 48" Samsung Un48h6350af 75" 1080p Led-lcd Tv - 16:9 - Hdtv 1080p - (un75h6350afxza)
9 Samsung UN48H6350 48" Samsung UN48H6350 - 48" HD 1080p Smart HDTV 120Hz Bundle
10 Samsung UN48H6350 48" Samsung UN48H6350 - 48-Inch Full HD 1080p Smart HDTV 120Hz with Wi-Fi, (R#416)发布于 2015-01-13 20:28:37
我想另一种类似的方法就是使用一个简单的match
string <- strsplit(c(t1, t2), "\\s+") # similar to @Richard
length(na.omit(match(string[[2]], string[[1]])))
## [1] 7或者可能是lapply
length(unlist(lapply(string[[2]], intersect, string[[1]])))
## [1] 7发布于 2015-01-13 20:02:24
我不太清楚你所说的方向有什么关系。除非您更改数据,否则交集的长度不应更改。这可能就是你要找的。
length(Reduce(intersect, strsplit(c(t1, t2), "\\s+")))
# [1] 7如果将c(t1, t2)切换到c(t2, t1),则可以看到Reduce输出中的差异。但正如我所说,长度将保持不变。只是集合的顺序不同。
https://stackoverflow.com/questions/27930097
复制相似问题