2012-09-03 60 views
1

可以說我有start=1,end=12和區間start:end將整數間隔分成幾乎相等的長度

我想它的x=2箱分開,這樣我會得到的

start.index end.index 
1   1   2 
2   3   4 
3   5   6 
4   7   8 
5   9  10 
6   11  12 

數據幀在這種情況下,結果6個箱。 start,endx總是整數

是否有任何功能可以做到這一點?特別當start%%x!=0一個bin可能比其他的大或小,但我不介意。

任何幫助?

回答

3

這裏有這樣的功能的一個簡單的例子東西:

foo <- function(start, end, x = 2) { 
    SEQ <- seq(start, end, by = x) 
    END <- SEQ + (x - 1) 
    take <- END > end 
    END[take] <- end 
    data.frame(start.index = SEQ, end.index = END) 
} 

R> foo(1, 12, 2) 
    start.index end.index 
1   1   2 
2   3   4 
3   5   6 
4   7   8 
5   9  10 
6   11  12 
R> foo(1, 12, 3) 
    start.index end.index 
1   1   3 
2   4   6 
3   7   9 
4   10  12 
R> foo(1, 12, 4) 
    start.index end.index 
1   1   4 
2   5   8 
3   9  12 

而且有奇數的觀察值,所以我們得到了最後一個不同的箱寬:

R> foo(1, 11) 
    start.index end.index 
1   1   2 
2   3   4 
3   5   6 
4   7   8 
5   9  10 
6   11  11 
-1

只是覺得通過寫你自己的,你不需要適用於所有的標準功能

dim output as new list(of tuple(of integer,integer)) 
for index as integer = start to end step x 
    output.add(new tuple(of integer,integer)(index, math.min(index+x,end)) 
next 

或類似

+2

對於R中的這類事情,循環不是一個很好的選擇(其他語言可能會有所不同;-)。 –

+0

你知道,我甚至沒有注意到問題上的「R」標籤。不理我。 – PaulMolloy

相關問題