数据表中的数学运算(在R中)

4

我听说(朋友告诉我的)在数据表上进行数学运算比在矩阵上快得多。我正在尝试计算大小为30kx30k的两个矩阵的点积,并寻找所需时间。

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
1个回答

9
这个问题的前提是不正确的。data.tables和data.frames一样,都是向量列表。
相反,矩阵是一个带有维度属性的单个向量。
向量列表存在额外开销,如果您的数据可以适配矩阵,则可以避免这种情况。
data.frames(和根据应用程序而定的其他列表)或使用另一个向量作为迭代索引时相比,data.tables更快。
但是,对于直接矩阵乘法,请使用matrix

1
矩阵的列操作怎么样?例如,m [,1] <- m [,2] ^ 2 - Simon Woodward
答案是否仍然相关,或者data.table在这个主题上取得了重大进展? - Marko Karbevski

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接