2015-05-08 23 views
0

我将如何使用应用或它的一个版本,以获得周围使用这种循环:使用应用来解决环路

data<- seq(from = -100, to = 100, by = 10) 
data 
times<- seq(from = 25, to = 100, by=25) 
for(i in 1:length(times)) 
{ 
    print(length(data[data < -times[i] | data > times[i]])/length(data)) 
} 

我计算“数据”数据帧的频率表。

谢谢。

+0

从你的口头描述来看,这听起来像你正在寻找'table' – Frank

回答

0

你可以尝试:

sapply(1:length(times), 
     function(i) length(data[data < -times[i] | data > times[i]])/length(data)) 

,输出:

[1] 0.7619048 0.4761905 0.2857143 0.0000000 
2

这里是一个矢量化的解决方案:

unname(#remove names 
    rev(#reverse order 
    cumsum(#cumulative sum 
     rev(#reverse order 
     table(#contingency table of the counts of each interval 
      cut(abs(data), c(times, Inf)) #cut into intervals 
     ) 
     ) 
    ) 
    ) 
)/length(data) 
#[1] 0.7619048 0.4761905 0.2857143 0.0000000 

注意data不是data.frame。

相关问题