小编aSt*_*orn的帖子

在我的基准测试项目中,Base R 对数据集的排序速度比 dplyr 或 data.table 快得多。为什么是这样?我们都应该使用 Base R 吗?

我正在比较不同数据操作包在不同大小的数据集上对某些操作的执行情况。

我生成了一个虚拟数据集(iris x iris 的笛卡尔积。毫无意义,但本质上只是一个 22500 x 10 数据集)。

library(dplyr)
library(data.table)
library(rbenchmark)

iris_big <- merge(x = iris, y = iris, by = NULL) 

iris_big_dt <- as.data.table(iris_big) #for data.table

benchmark("Base R" = {
            iris_big[base::order("Petal.Width.y")]
          },
          "dplyr" = {
            dplyr::arrange(iris_big,"Petal.Width.y")
          },          

          "data.table" = {
            data.table::setorder(iris_big_dt,"Petal.Width.y")
          },
          replications = 30,
          columns = c("test", "replications", "elapsed",
                      "relative", "user.self", "sys.self"))

Run Code Online (Sandbox Code Playgroud)

输出::

| test       | replications   |elapsed|...|sys.self|
| --------   | -------------- |----   |---|---|
| Base R     | 30             |0.00   |...|0.00|
| data.table | 30             |0.04   |...|0.02| …
Run Code Online (Sandbox Code Playgroud)

performance r dplyr data.table

0
推荐指数
1
解决办法
1133
查看次数

标签 统计

data.table ×1

dplyr ×1

performance ×1

r ×1