作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
length(v) 80373285 # 80 million v 的条目是 整数 均匀分布在 0 到 100 之间。 > ptm tv s-6ren">
> class(v)
"numeric"
> length(v)
80373285 # 80 million
v
的条目是
整数 均匀分布在 0 到 100 之间。
> ptm <- proc.time()
> tv <- table(v)
> show(proc.time() - ptm)
user system elapsed
96.902 0.807 97.761
table
在这个向量上运行这么慢?
bigtable
函数来自
bigtabulate
很快:
> library(bigtabulate)
> ptm <- proc.time() ; bt <- bigtable(x = matrix(v,ncol=1), ccols=1) ; show(proc.time() - ptm)
user system elapsed
4.163 0.120 4.286
bigtabulate
是一个很好的解决方案,为了这个简单的功能而求助于一个特殊的包似乎很笨拙。从技术上讲,存在开销,因为我将向量扭曲成矩阵以使其与
bigtable
一起使用.基础
R
中不应该有更简单、更快的解决方案吗? ?
R
功能
cumsum
即使对于这个长向量也非常快:
> ptm <- proc.time() ; cs <- cumsum(v) ; show(proc.time() - ptm)
user system elapsed
0.097 0.117 0.214
最佳答案
因为它叫 factor
第一的。试试 tabulate
如果您的所有条目都是整数。但是您需要加 1,以便向量值从 1 开始而不是 0。
关于R:表功能出奇地慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51503226/
我是一名优秀的程序员,十分优秀!