r - 在 R 中找到 2 个整数的最长匹配

标签 r match

我有 2 个包含数字的列表,我需要将一个列表的值与另一个列表的值进行匹配。匹配必须根据数字的开头进行。它必须返回可能的最长匹配的 row_id。

lookup value: 12345678

find_list:
a   1
b   12
c   123
d   124
e   125
f   1234
g   1235

在此示例中,我们将与 a,b,c,f 进行匹配,并且 R 必须返回 f。由于 f 是最长的,因此是最佳匹配。

我现在已经使用了 R 中的 startsWith 函数。从这个答案中我选择了最长的值。但问题是名单太大了。我在 find_list 中有 1850 万个查找值和 300,000 个可能值,一段时间后 R 崩溃了。

有更聪明的方法吗?

最佳答案

find_list$X[which.max(sapply(find_list$find_list, function(myX)
    attr(gregexpr(myX, lookup_value)[[1]], "match.length")))]
#[1] "f"

数据

find_list = structure(list(X = c("a", "b", "c", "d", "e", "f", "g"), find_list = c(1L, 
12L, 123L, 124L, 125L, 1234L, 1235L)), .Names = c("X", "find_list"
), class = "data.frame", row.names = c(NA, -7L))

lookup_value = 12345678

关于r - 在 R 中找到 2 个整数的最长匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47517561/

相关文章:

python - 如何在 Pandas 中测试字符串是否包含列表中的子字符串之一?

perl - 计算文本文件中匹配术语的数量?

r - 在 R 中使用具有不同数据数量的查找表

r - 如何在 R 中以原始单位绘制转换后的时间序列 ETS 预测?

r - “'假名的长度'[1]不等于数组范围”是什么意思?

r - 将 for 循环的结果分配给空矩阵

r - 如何在不知道索引 R 的情况下在多列中应用 as.Date 函数

javascript - 将字符串匹配到数组

arrays - 如何匹配 token 前的非字母?

r - 对创建的数据进行剪切和排序