R の関数の「巧妙さ」は、次seq
の場合のコーナーケースで何度も私をひどく襲いましたlower == upper - 1
。
> 1:0
[1] 1 0
> seq(1, 0)
[1] 1 0
> seq(1, 0, 1)
Error in seq.default(1, 0, 1) : wrong sign in 'by' argument
私は、この奇妙な行動の理由を尋ねているわけではありません。それは、私たちが共に生きなければならない遺産に過ぎないと思います。seq
代わりに、この場合、次のように空のシーケンスを返す演算子を実装するパッケージがあるかどうかを知りたいです。
safe.seq.int <- function(from, to, by=1) {
if (from > to) integer(0) else seq.int(from, to, by)
}
> safe.seq.int(1, 0)
integer(0)