Вывод ошибки при использовании класса RLBigData в пакете RecordLinkage R - PullRequest
0 голосов
/ 25 марта 2019

При использовании пакета 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)

Я не уверен, почему код выдает эти ошибки во втором случае.Я хотел устранить неполадки кода в небольшом наборе данных, прежде чем переходить к большим наборам данных.Я был бы очень признателен, если бы кто-нибудь смог пролить свет на эти ошибки и предупреждения, выводимые этим пакетом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...