R:条件向量的和向量

时间:2015-08-16 00:33:51

标签: r

我正在尝试获取一个向量,其中包含符合条件的元素总和。

    values = runif(5000)
    bin = seq(0, 0.9, by = 0.1)
    sum(values < bin)

我预计这笔钱会给我10个值 - 一个&#34;值的总和&#34;适合&#34;&lt;&#34;每个条件&#34; bin&#34;元件。 但是,它只返回一个值。 如何在不使用while循环的情况下实现结果?

1 个答案:

答案 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