data.table的数学运算(在R中)

use*_*306 4 r matrix data.table

我(从我的朋友那里)听说data.table上的数学运算比矩阵更快.我正在尝试计算两个大小为30kx30k的矩阵的dot.product,并寻找所花费的时间

matrix1 = matrix(rexp(200, rate=.1), ncol=30000,nrow=30000)
matrix2 = matrix(rexp(200, rate=.1), ncol=30000,nrow=30000)
product = matrix1 %*% matrix2
Run Code Online (Sandbox Code Playgroud)

我想用data.table做同样的事情

dt1<- as.data.table(matrix1)
dt2<- as.data.table(matrix2)
Run Code Online (Sandbox Code Playgroud)

你能告诉我是否有更简单的方法在data.table上做点积(不将它们转换成矩阵)?

Ric*_*rta 8

这个问题的前提是不正确的. data.tables,就像data.frames是向量列表.

相反,矩阵是具有维度属性的单个向量.

有一个与列表相关的开销,如果您的数据可以适合矩阵,则可以避免这种开销.

data.tables 相对于data.frames更快(并且取决于应用程序,列出它们自己),或者使用另一个向量作为迭代的索引.

但是,对于直接矩阵乘法,坚持下去 matrix