Más de una vez la "inteligencia" de la función de R seq
me ha golpeado fuertemente en el caso esquina cuando lower == upper - 1
:la construcción de secuencias que crea una secuencia vacía si es más bajo es mayor que el límite superior
> 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
no estoy preguntando las razones de este extraño comportamiento: supongo que ahora es solo un legado con el que tenemos que vivir. En su lugar, me gustaría saber si cualquier paquete implementa un operador seq
que devuelve una secuencia vacía en este caso, como la siguiente:
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)
¡Exactamente lo que necesito, gracias! No lo he probado antes. Lástima que la documentación no incluya un ejemplo para 'seq_len (0)' ... – krlmlr
¡Ningún problema en absoluto, y gracias por mi primer tic! :) –