【问题标题】:mathematical operations on data.table(in R)data.table 上的数学运算(在 R 中)
【发布时间】:2014-08-01 03:49:08
【问题描述】:

我(从我的朋友那里)听说,对 data.table 的数学运算比对矩阵的运算要快得多。 我正在尝试计算两个大小为 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 上进行点积(不将它们转换为矩阵)?

【问题讨论】:

  • 你的朋友弄错了,对不起

标签: r matrix data.table


【解决方案1】:

这个问题的前提是不正确的。 data.tables 和 data.frames 一样是向量列表。

相比之下,矩阵是具有维度属性的单个向量。

列表会产生开销,如果您的数据适合矩阵,则可以避免这种开销。

data.tables 相对于 data.frames 更快(并且取决于应用程序,列表本身),或者在使用另一个向量作为索引进行迭代时。

但是,对于直接矩阵乘法,请坚持使用matrix

【讨论】:

  • 矩阵上的列操作怎么样?例如m[,1]
  • 答案是否仍然相关或 data.table 在该主题上取得了重大进展?
猜你喜欢
  • 2020-11-16
  • 2012-07-20
  • 1970-01-01
  • 2011-03-10
  • 1970-01-01
  • 2020-05-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-30
相关资源
最近更新 更多