拥有这些数据:
> 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小时,1小时,2小时,4小时......) 我希望能够绘制多少个时期的数据&lt; =而不是min(数据)+偏移量
在这个例子中它将是
1 20 20 20 20 20 20 20
我已经找到了如何使用for循环执行此操作:
for(i in c(1:length(myoffsets))) myres$x[i] <- length(data[data <= myoffsets[i]])
但是我确信如果这样做不是那么复杂会有更惯用的方法吗?
答案 0 :(得分:5)
建议1:稍微更惯用的方式是替换
length(data [data&lt; = myoffsets [i]])
与
sum(data&lt; = myoffsets [i])
这样,您最终不会为data
中的每个值获取myoffsets
的子集,只会计算其长度并丢弃。
建议2: c()
中的for
是多余的。以下操作将完全相同,只需更少的击键次数:for(i in 1:length(myoffsets))
。
最后,如果你想摆脱显式循环,这样的话可能符合你的口味:
myres $ x&lt; - sapply(myoffsets,function(o)sum(data&lt; = o))
答案 1 :(得分:0)
plot(subset(data, data <= min(data+offset)))