2012-10-02 9 views
15

Mam dane ~ 20,000x20,000, jak mogę przekonwertować z data.table() na matrix efektywnie pod względem szybkości i pamięci ?R: jak konwertować dane z data.table() na macierz wydajnie (prędkość i pamięć)

Próbowałem m = as.matrix(dt), ale zajmuje wiele czasu z wieloma ostrzeżeniami. df = data.frame(dt) trwa bardzo długo i skutkuje również osiągnięciem limitów pamięci.

Czy jest jakiś skuteczny sposób to zrobić? Lub po prostu funkcja w data.table, która zwraca dt jako formę matrycy (wymagane do wprowadzenia do modelu statystycznego przy użyciu pakietu glmnet)?

+2

Podaj [przykład odtwarzalny] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example). –

+0

możesz zasugerować, jak wyglądają twoje dane (użyj 'dput (subsetofyourdata)')? Jakie były ostrzeżenia, które zobaczyłeś, gdy próbowałeś 'as.matrix'? – Justin

+0

Czy możesz umieścić strukturę swojego stołu w pytaniu? –

Odpowiedz

0

Spróbuj:

result <- as.matrix(tidytext::cast_sparse(dat_table, 
    column_name_of_rows, 
    column_name_of_columns, 
    column_name_of_values)) 

Powinno być bardzo efektywny i szybki.