gpt4 book ai didi

r - 将矩阵转换为 data.table 的最快方法

转载 作者:行者123 更新时间:2023-12-04 02:37:29 25 4
gpt4 key购买 nike

将如下所示的矩阵转换为 data.table 的最快方法是什么?

mat <- matrix(1:9, nrow = 3)

1 2 3
4 5 6
7 8 9

我可以使用下面的代码将其转换为 data.table

setDT(data.frame(mat))[]

但这是最快的方法吗?我们可以在不先将其转换为 data.frame 的情况下执行此操作吗?

最佳答案

这里有一些例子来讨论形成data.table的速度,即as.data.tablesetDT(as.data.frame (mat))setDT(data.frame(mat))

  • 当行数少于列数时:
mat <- matrix(1:5e3, nrow = 5)
microbenchmark(unit = "relative",
as.data.table(mat),
setDT(as.data.frame(mat))[],
setDT(data.frame(mat))[])

Unit: relative
expr min lq mean median uq max neval
as.data.table(mat) 1.433084 1.417747 1.340552 1.413278 1.414386 1.070289 100
setDT(as.data.frame(mat))[] 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 100
setDT(data.frame(mat))[] 1.287526 1.281964 1.237544 1.284735 1.258662 1.186977 100
  • 当行多于列时:
mat <- matrix(1:5e3, nrow = 5e2)
microbenchmark(unit = "relative",
as.data.table(mat),
setDT(as.data.frame(mat))[],
setDT(data.frame(mat))[])

Unit: relative
expr min lq mean median uq max neval
as.data.table(mat) 1.114003 1.041410 1.083238 1.070029 1.049262 1.254732 100
setDT(as.data.frame(mat))[] 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 100
setDT(data.frame(mat))[] 1.680208 1.467538 1.482018 1.511009 1.479438 1.440440 100

备注:setDT(as.data.frame(mat))[] 是速度的赢家

关于r - 将矩阵转换为 data.table 的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61013078/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com