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上做点积(不将它们转换成矩阵)?
这个问题的前提是不正确的.
data.tables,就像data.frames是向量列表.
相反,矩阵是具有维度属性的单个向量.
有一个与列表相关的开销,如果您的数据可以适合矩阵,则可以避免这种开销.
data.tables 相对于data.frames更快(并且取决于应用程序,列出它们自己),或者使用另一个向量作为迭代的索引.
但是,对于直接矩阵乘法,坚持下去 matrix