1

使用 R 包RecordLinkage时,后面的一些输出epiClassify()emClassify()函数(可以对RLBigDataLinkage类对象进行操作)会输出错误。当我使用为较小的数据比较设计的函数时,这些错误不会出现,例如compare.linkage(). 可以在此处的包小插曲中找到描述此内容的文档。

我的总体目标是在两个表之间“模糊匹配”数据;一旦我知道基于其他变量的表之间哪些行相似,我就可以使用索引从一个表中的列中获取另一个表中缺少的唯一 ID。

数据:这是一些用于重现错误的虚拟数据...

library(tibble)
table1 <- tibble(col1 = c("JIMMY", "SARA", "AYIL", "JIM", "JOHN"),
                 col2 = c("OHEARN", "HANDLE", "HASE", "JHORN", ""),
                 col3 = c("jdt322", "jdb122", "", "ddd532", "ddd444"))

table2 <- tibble(col1 = c("JIMMY", "SARAH", "SARA",  "AYIL", "JIM", "JOHN", "timm"),
                 col2 = c("OHEARN", "HAND","H",  "HASE", "JORN", "", ""),
                 col3 = c("jdt322", "jda122", "jdb112", "", "ddd532", "ddd444", "ddd322"))

当我在函数中使用上述数据进行较小的比较时,它工作正常,没有错误:

mypairs <- RecordLinkage::compare.linkage(table1, table2, strcmp = T)
mypairs_weights <- emWeights(mypairs)
result <- emClassify(mypairs_weights, threshold.lower = 1)
getTable(result)
summary(result)
getPairs(result, min.weight = 1)

但是,在我使用RLBigData该类之后(如下面的代码所示),在以下情况下会出现错误:

  • 我尝试在以下情况下访问该对象resultemClassify()nrow中的错误(object@pairs):对于“RLResult”类的这个对象,没有名称“pairs”的插槽

  • 尝试通过以下方式获取摘要summary(result)dbGetQuery(object@con, "select count( ) from data1") 中的错误:对于“RLBigDataLinkage”类的这个对象,没有名称为“con”的插槽*

  • 试图通过以下方式获取比较表getTable(result)table.ff(object@data@pairs$is_match, object@prediction, useNA = "ifany") 中的错误:当前仅允许 vmodes 整数 - 你确定 ... 仅包含因子或整数?

  • RLBigDataLinkage()首次运行该函数时也会引发警告:警告消息:1:在 result_fetch(res@ptr, n = n) 中:不需要为语句调用 dbFetch(),仅用于查询

以下代码应重现这些错误

mypairs <- RLBigDataLinkage(table1, table2,
                            strcmp = T,
                            strcmpfun = "jarowinkler")

mypairs_weights <- emWeights(mypairs)
result <- emClassify(mypairs_weights, 0.6)
result
getTable(result)
summary(result)
getPairs(result, min.weight = 0.5)

我不确定为什么代码在第二种情况下会吐出这些错误。在移动到更大的数据集之前,我想对小数据集上的代码进行故障排除。如果有人能阐明这个包输出的这些错误和警告,我将不胜感激。

4

0 回答 0