3 回答

TA貢獻(xiàn)1752條經(jīng)驗(yàn) 獲得超4個(gè)贊
大量使用一些R慣用法:
> split(v, cumsum(c(1, diff(v) != 1)))
$`1`
[1] 1
$`2`
[1] 3 4 5
$`3`
[1] 9 10
$`4`
[1] 17
$`5`
[1] 29 30

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超7個(gè)贊
約書亞(Joshua)和亞倫(Aaron)在現(xiàn)場(chǎng)。但是,通過謹(jǐn)慎使用正確的類型,整數(shù)和邏輯,它們的代碼仍然可以達(dá)到兩倍以上的速度:
split(v, cumsum(c(TRUE, diff(v) != 1L)))
v <- rep(c(1:5, 19), len = 1e6) # Huge vector...
system.time( split(v, cumsum(c(1, diff(v) != 1))) ) # Joshua's code
# user system elapsed
# 2.64 0.00 2.64
system.time( split(v, cumsum(c(TRUE, diff(v) != 1L))) ) # Modified code
# user system elapsed
# 1.09 0.00 1.12
- 3 回答
- 0 關(guān)注
- 645 瀏覽
添加回答
舉報(bào)