2014-07-31 4 views
1

Я слышал (из моего frnd), что математические операции с data.table намного быстрее, чем на матрице. Я пытаюсь вычислить dot.product два матрицы размера 30kx30k, и ищу время, потраченноематематические операции на data.table (in R)

matrix1 = matrix(rexp(200, rate=.1), ncol=30000,nrow=30000) 
matrix2 = matrix(rexp(200, rate=.1), ncol=30000,nrow=30000) 
product = matrix1 %*% matrix2 

То же, что я хочу сделать с помощью data.table

dt1<- as.data.table(matrix1) 
dt2<- as.data.table(matrix2) 

Может вам скажите, пожалуйста, есть ли более простой способ делать точечный продукт на data.table (без преобразования их в матрицу)?

+3

друга ошибся, извини – eddi

ответ

6

Посылка в этом вопросе неверна. data.table s, как data.frame s - это списки векторов.

Напротив, матрица представляет собой один вектор с атрибутом измерения.

В списке есть служебные данные, которых можно избежать, если ваши данные могут соответствовать матрице.

data.tables быстрее по сравнению с data.frames (и в зависимости от приложения, сами списки) или при использовании другого вектора в качестве индекса для итерации.

Однако для прямого умножения матриц, придерживайтесь matrix

Смежные вопросы