Maneira eficiente de criar matriz de cesta de mercado em R

Eu estou tentando criar uma matriz de cesta de mercado de dados que se parece com o seguinte:

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)

Isto representa os seguintes dados:

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

A partir disso, é criada uma matriz que tem um cliente como uma linha e todos os produtos como colunas. Isto pode ser conseguido criando primeiro esta matriz com zero:

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)

Isso tudo é rápido o suficiente (tem dados de mais de 750.000 linhas, criando uma matriz de 15000 por 1500), mas agora eu quero preencher a matriz quando apropriado:

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

Eu acho que tem que haver uma maneira mais eficiente de fazer isso, já que eu aprendi com o stackoverflow que para loops muitas vezes podem ser evitados. Então a questão é, existe um caminho mais rápido?

E eu preciso dos dados em uma matriz porque eu gostaria de usar pacotes como o caret. E depois disso eu provavelmente vou estar correndo para o mesmo problema que aquiR conselho de gerenciamento de memória (circunflexo, matrizes de modelo, quadros de dados), mas isso é uma preocupação para mais tarde.

questionAnswers(3)

yourAnswerToTheQuestion