我正在尝试获取一个向量,其中包含符合条件的元素总和。
values = runif(5000)
bin = seq(0, 0.9, by = 0.1)
sum(values < bin)
我预计这笔钱会给我10个值 - 一个&#34;值的总和&#34;适合&#34;&lt;&#34;每个条件&#34; bin&#34;元件。 但是,它只返回一个值。 如何在不使用while循环的情况下实现结果?
答案 0 :(得分:2)
使用带有cut()
构造的INDEX向量的tapply似乎可以提供:
tapply( values, cut(values, bin), sum)
(0,0.1] (0.1,0.2] (0.2,0.3] (0.3,0.4] (0.4,0.5] (0.5,0.6]
25.43052 71.06897 129.99698 167.56887 222.74620 277.16395
(0.6,0.7] (0.7,0.8] (0.8,0.9]
332.18292 368.49341 435.01104
虽然我猜你会希望剪切矢量扩展到1.0:
bin = seq(0, 1, by = 0.1)
tapply( values, cut(values, bin), sum)
(0,0.1] (0.1,0.2] (0.2,0.3] (0.3,0.4] (0.4,0.5] (0.5,0.6]
25.48087 69.87902 129.37348 169.46013 224.81064 282.22455
(0.6,0.7] (0.7,0.8] (0.8,0.9] (0.9,1]
335.43991 371.60885 425.66550 463.37312
我看到我理解这个问题的方式不同于理查德。如果您想要他的结果,可以在我的结果上使用cumsum
。