有此数据:

> 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

是UNIX纪元列表和偏移量列表(0.5小时,1h,2h,4h ...)
我希望能够绘制出多少个时期小于等于min(data)+ offset

在这个例子中
1 20 20 20 20 20 20 20

我发现如何使用for循环来做到这一点:
for(i in c(1:length(myoffsets))) myres$x[i] <- length(data[data <= myoffsets[i]])

但是我敢肯定,如果这样做不那么令人费解,还有一种更惯用的方法吗?

最佳答案

建议1:一种更惯用的方法是替换







这样,您不必最终为data中的每个值都使用myoffsets的子集,而只是计算其长度并丢弃。

建议2: c()中的for是多余的。以下内容将以更少的击键完成完全相同的操作:for(i in 1:length(myoffsets))

最后,,如果您希望摆脱显式循环,则可能是您的喜好:

关于r - 如何以惯用的方式计算满足条件的元素数量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4317452/

10-12 17:14