Skuteczny sposób tworzenia macierzy koszyków rynkowych w R

Próbuję utworzyć macierz koszyka rynkowego na podstawie danych, które wyglądają następująco:

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)

Reprezentuje następujące dane:

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

Z tego tworzona jest macierz, która ma klienta jako wiersz i wszystkie produkty jako kolumny. Można to osiągnąć, najpierw tworząc tę ​​macierz z zerami:

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)

To wszystko jest wystarczająco szybkie (mieć dane 750 000+ wierszy, tworząc macierz 15000 na 1500), ale teraz chcę wypełnić matrycę tam, gdzie to właściwe:

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

Myślę, że musi to być bardziej skuteczny sposób, ponieważ nauczyłem się od stackoverflow, że często można uniknąć pętli. Więc pytanie brzmi: czy istnieje szybszy sposób?

Potrzebuję danych w macierzy, ponieważ chciałbym używać pakietów takich jak karetka. A potem prawdopodobnie będę miał taki sam problem jak tutajPorady dotyczące zarządzania pamięcią R (macierze kursora, macierze modelu, ramki danych), ale to problem na później.

questionAnswers(3)

yourAnswerToTheQuestion