При использовании пакета R RecordLinkage
некоторые выходы, следующие за функциями epiClassify()
или emClassify()
(которые могут работать с объектами класса RLBigDataLinkage
), будут выдавать ошибки.Эти ошибки не видны, когда я использую функции, предназначенные для небольших сравнений данных, такие как compare.linkage()
.Документация, описывающая это, может быть найдена в виньетках пакета здесь .
Моей общей целью является «нечеткое совпадение» данных между двумя таблицами;как только я узнаю, какие строки похожи между таблицами на основе других переменных, я могу затем использовать индекс для получения уникальных идентификаторов из столбца в одной таблице, которые отсутствуют в другой таблице.
Данные : Это некоторые фиктивные данные для воспроизведения ошибок ...
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
(как в коде ниже) я получаю ошибки, когда:
Я пытаюсь получить доступ к объекту result
после emClassify()
: Ошибка в nrow (объект @ пары): для этого объекта класса "RLResult" нет слота с именем "пар"
Попытка получить сводку с помощьюsummary(result)
: Ошибка в dbGetQuery (object @ con, "select count () from data1"): нет слота с именем "con" для этого объекта класса "RLBigDataLinkage" *
Попытка получить таблицу сравнения с помощью getTable(result)
: Ошибка в table.ff (object @ data @ pair $ is_match, object @вести прогноз, 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)
Я не уверен, почему код выдает эти ошибки во втором случае.Я хотел устранить неполадки кода в небольшом наборе данных, прежде чем переходить к большим наборам данных.Я был бы очень признателен, если бы кто-нибудь смог пролить свет на эти ошибки и предупреждения, выводимые этим пакетом.