Эффективный способ создать матрицу рыночной корзины в R

Я пытаюсь создать матрицу рыночной корзины из данных, которые выглядят следующим образом:

input <- matrix( c(1000001,1000001,1000001,1000001,1000001,1000001,1000002,1000002,1000002,1000003,1000003,1000003,100001,100002,100003,100004,100005,100006,100002,100003,100007,100002,100003,100008), ncol=2)

Это представляет следующие данные:

colnames(input) <- c( "Customer" , "Product" )

Из этого создается матрица, в которой клиент представлен в виде строки, а все продукты - в виде столбцов. Это может быть достигнуто путем создания этой матрицы с нулями:

input <- as.data.frame(input)
m <- matrix(0, length(unique(input$Customer)), length(unique(input$Product)))
rownames(m) <- unique(input$Customer)
colnames(m) <- unique(input$Product)

Это все достаточно быстро (есть данные из 750 000+ строк, создающих матрицу 15000 на 1500), но теперь я хочу заполнить матрицу, где это уместно:

for( i in 1:nrow(input) ) {
    m[ as.character(input[i,1]),as.character(input[i,2])] <- 1
}

Я думаю, что должен быть более эффективный способ сделать это, поскольку я узнал из stackoverflow, что для циклов часто можно избежать. Вопрос в том, есть ли более быстрый путь?

И мне нужны данные в матрице, потому что я хотел бы использовать такие пакеты, как Caret. И после этого я, вероятно, столкнусь с той же проблемой, что и здесьРекомендации по управлению памятью (каретка, матрицы моделей, кадры данных), но это беспокойство на потом.

Ответы на вопрос(3)

Ваш ответ на вопрос