【发布时间】:2020-04-12 10:36:38
【问题描述】:
我有以下示例数据:
targets <- c("der", "das")
candidates <- c("sdassder", "sderf", "fongs")
所需的输出:
我想找到sdassder 作为输出,因为它包含targets 的最多匹配项(作为子字符串)。
我尝试了什么:
x <- sapply(targets, function(target) sapply(candidates, grep, pattern = target)) > 0
which.max(rowSums(x))
目标:
如您所见,我发现了一些从技术上产生结果的脏代码,但我认为它不是最佳实践。我希望这个问题适合这里,否则我会转到代码审查。
我尝试了 mapply、do.call、outer,但没有找到更好的代码。
编辑:
在看到当前答案后自己添加另一个选项。
使用管道:
sapply(targets, grepl, candidates) %>% rowSums %>% which.max %>% candidates[.]
【问题讨论】: