Ошибка «может привести список только к элементарным компонентам» при преобразовании в транзакции - PullRequest
0 голосов
/ 05 июня 2018

У меня есть фрейм данных, и он выглядит так:

str(df)

'data.frame':   174671 obs. of  3 variables:
 $ COD_PRODUCT: Factor w/ 338 levels "001CH","002CO",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ STORE      : Factor w/ 15 levels "Barcelona","Florencia",..: 4 13 4 5 11 12 5 13 1 12 ...
 $ SELL_ID    : Factor w/ 74327 levels "BA0000000","BA0000001",..: 28696 65976 27147 14291 51141 59023 12249 61636 5495 59314 ...

В этих факторах нет ни NA, ни недопустимых значений, как мы можем видеть здесь:

print(unlist(lapply(df, function(x) any(is.na(x)))))
COD_PRODUCT       STORE     SELL_ID 
      FALSE       FALSE       FALSE 

MyЦель состоит в том, чтобы создать модель интеллектуального анализа данных (правила ассоциации), и для этого ранее я успешно импортировал пакет arules .Следующим шагом, которым я следовал, было разделение моего df на список и применение операции для устранения дублирующихся вхождений, таких как:

ppvt <- split(x = df[, c("COD_PRODUCT", "STORE")], f = df$SELL_ID)
ppvt <- lapply (ppvt, unique)

Пока что все работает нормально.Тем не менее, когда я пытался преобразовать в транзакции:

ppvt <- as (ppvt,  "transactions" )

я получаю сообщение об ошибке:

 Error in asMethod(object) : can coerce list with atomic components only

Совершенно не догадываясь об этом (и да, как вы можете себе представить, ямного искал в интернете до приезда сюда).У вас есть идея о том, как ее решить?

Любая помощь будет по достоинству оценена.

С уважением,

1 Ответ

0 голосов
/ 01 мая 2019

Можете ли вы проверить класс (ppvt) перед вашим:

ppvt <- as (ppvt, "транзакции"). </p>

Он должен вернуть data.frame для вашего:

ppvt <- as (ppvt, "транзакции") </p>

для работы.

Я работал с dplyr и столкнулся с аналогичной проблемой.Преобразование таблицы в data.frame с помощью as.data.frame () решило проблему.

...