gpt4 book ai didi

r - 在一个语句中对多个 data.table 赋值是否有性能优势?

转载 作者:行者123 更新时间:2023-12-04 10:49:34 25 4
gpt4 key购买 nike

data.table ,以下有等价的结果:

dt1 <- data.table(iris)
dt1[, Long.Petal := Petal.Length > mean(Petal.Length)]
dt1[, Wide.Petal := Petal.Width > mean(Petal.Width)]


dt2 <- data.table(iris)
dt2[, `:=`(
Long.Petal = Petal.Length > mean(Petal.Length),
Wide.Petal = Petal.Width > mean(Petal.Width)
)]

在处理大型数据集时,后一种形式是否具有性能优势(在内存或运行时间或两者方面)?还是开销最小,这只是风格和可读性的问题?

最佳答案

需要考虑的事情是 a) 调用 [.data.table , 和 b) 在 [.data.table 中运行代码.

对于几个电话,它不应该真正影响。但是,如果您这样做 100 次或 1000 次(例如,使用 for 循环),那么它的性能可能会降低..主要是由于调度时间 [.data.table .在这种情况下,只要没有分组,set()是一个更好的选择。

无论如何,这些东西很容易在你的数据集上为你自己进行基准测试。调用 Rprof(); <your_code>; Rprof(NULL); summaryRprof()应该对花费的时间以及大部分时间花在何处有所了解。

关于r - 在一个语句中对多个 data.table 赋值是否有性能优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34182730/

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