我读过这篇文章http://www.r-bloggers.com/comparing-hist-and-cut-r-functions/和测试hist()
要比我的电脑上的cut()
快4倍。我的脚本通过cut()多次循环,因此节省时间非常重要。因此,我尝试切换到更快的功能,但难以获得按照cut()
的确切输出。使用speedier hist()或findInterval()获取与cut()相同的输出?
从以下示例代码:
data <- rnorm(10, mean=0, sd=1) #generate data
my_breaks <- seq(-6, 6, by=1) #create a vector that specifies my break points
cut(data, breaks=my_breaks)
我希望得到包含数据的每个元素被分配给使用我的断点水平的矢量,即cut
确切输出:
[1] (1,2] (-1,0] (0,1] (1,2] (0,1] (-1,0] (-1,0] (0,1] (-2,-1] (0,1]
Levels: (-6,-5] (-5,-4] (-4,-3] (-3,-2] (-2,-1] (-1,0] (0,1] (1,2] (2,3] (3,4] (4,5] (5,6]
>
我的问题:如何使用hist()
输出的元素(即中断,计数,密度,中等等)或findInterval
达到我的目的?
另外,我发现https://stackoverflow.com/questions/12379128/r-switch-statement-on-comparisons使用findInterval
的例子,但这需要我事先创建间隔标签,这不是我想要的。
任何帮助,将不胜感激。提前致谢!
我很抱歉,但我不明白的前提。 'hist'和'cut'做了完全不同的事情。 'hist'计算每个bin中的频率,并且“cut”将相应的bin分配给每个值。前者比后者快,这并不奇怪。 – Roland
投票搁置,因为这个问题目前毫无意义。 –
Hi @Roland,在'cut()'的R帮助中,hist()被认为更有效率:_var(table,cut(x,br)),hist(x,br,plot = FALSE)高效率和更少的内存饥饿。所以我想:因为他们在'相同的呼吸'中被提及,'hist()'真的可以作为'cut()'的替代品,这可以加速我的代码。 – NoviceProg