拥有这些数据:
> 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)
但是我敢肯定,如果这样做不那么复杂,那么会有更惯用的方法吗?
建议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))
归档时间: |
|
查看次数: |
9377 次 |
最近记录: |