gpt4 book ai didi

R - hist(XX, plot=FALSE)$count 的更快替代品

转载 作者:行者123 更新时间:2023-12-01 09:50:40 25 4
gpt4 key购买 nike

我正在寻找 R 的 hist(x, breaks=XXX, plot=FALSE)$count 函数的更快替代品,因为我不需要生成的任何其他输出(因为我想在 sapply 调用中使用它,需要调用此函数的 100 万次迭代),例如

x = runif(100000000, 2.5, 2.6)
bincounts = hist(x, breaks=seq(0,3,length.out=100), plot=FALSE)$count

有什么想法吗?

最佳答案

第一次尝试使用tablecut:

table(cut(x, breaks=seq(0,3,length.out=100)))

它避免了额外的输出,但在我的电脑上大约需要 34 秒:

system.time(table(cut(x, breaks=seq(0,3,length.out=100))))
user system elapsed
34.148 0.532 34.696

hist 的 3.5 秒相比:

system.time(hist(x, breaks=seq(0,3,length.out=100), plot=FALSE)$count)
user system elapsed
3.448 0.156 3.605

使用 tabulate.bincode 运行速度比 hist 快一点:

tabulate(.bincode(x, breaks=seq(0,3,length.out=100)), nbins=100)

system.time(tabulate(.bincode(x, breaks=seq(0,3,length.out=100))), nbins=100)
user system elapsed
3.084 0.024 3.107

使用 tablulatefindInterval 相对于 tablecut 提供了显着的性能提升,并且有一个不错的改进相对于 hist:

tabulate(findInterval(x, vec=seq(0,3,length.out=100)), nbins=100)

system.time(tabulate(findInterval(x, vec=seq(0,3,length.out=100))), nbins=100)
user system elapsed
2.044 0.012 2.055

关于R - hist(XX, plot=FALSE)$count 的更快替代品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38437350/

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