いくつかのベンチマークとより高速なソリューション。は、標準のユースケースでrep.int
のより高速な実装です(から)rep
?rep
rep.int(a, b)
上記のベンチマークについては確信が持てませんでした
inverse.rle
の単なるラッパーですrep.int
。rep.int
よりも高速である必要がありますrep
。wrapper
の成分は、原始関数としてinverse.rle
の解釈よりも遅いはずだと思いますrep()
いくつかのマイクロベンチマーク
library(microbenchmark)
microbenchmark(rep(a,b), rep.int(a,b),
inverse.rle(list(values = a, lengths =b)))
Unit: milliseconds
expr min lq median uq
1 inverse.rle(list(values = a, lengths = b)) 29.06968 29.26267 29.36191 29.67501
2 rep(a, b) 25.65125 25.76246 25.84869 26.52348
3 rep.int(a, b) 20.38604 23.31840 23.38940 23.69600
max
1 72.80645
2 69.00169
3 66.40759
それほど多くはありませんrep.int
が、勝者のように見えます-そうあるべきです。