我有 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/