如何计算有多少元素以惯用的方式满足条件?

use*_*602 10 r

拥有这些数据:

> data
 [1] 1290603356 1290603360 1290603350 1290603344 1290603340 1290603373
 [7] 1290603354 1290603359 1290603345 1290603363 1290603357 1290603354
[13] 1290603364 1290603349 1290603352 1290603365 1290603349 1290603343
[19] 1290603339 1290603343
> offsets <- c(0, 0.5,1,2,4,8,24,4*24,7*24) * 3600)
[1]   1800   3600   7200  14400  28800  86400 345600 604800
> myoffsets <- min(data)+offsets
Run Code Online (Sandbox Code Playgroud)

是,一个UNIX纪元列表和一个偏移列表(0.5小时,1小时,2小时,4小时...)我希望能够绘制多少个时期<=比最小(数据)+偏移

在这个例子中它将是

1 20 20 20 20 20 20 20
Run Code Online (Sandbox Code Playgroud)

我已经找到了如何使用for循环执行此操作:

for(i in c(1:length(myoffsets))) myres$x[i] <- length(data[data <= myoffsets[i]])
Run Code Online (Sandbox Code Playgroud)

但是我敢肯定,如果这样做不那么复杂,那么会有更惯用的方法吗?

NPE*_*NPE 5

建议1:稍微更惯用的方法是替换

长度(data [data <= myoffsets [i]])

sum(data <= myoffsets [i])

这样,您最终不会data为每个值获取子集myoffsets,只计算其长度和丢弃.

建议2:c()for是冗余的.以下更少的按键操作完全相同:for(i in 1:length(myoffsets)).

最后,如果你想摆脱显式循环,这样的事情可能符合你的口味:

myres $ x < - sapply(myoffsets,function(o)sum(data <= o))