有此数据:
> 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/