Più di una volta la "bravura" della funzione di R seq
mi ha colpito male nel caso in angolo quando lower == upper - 1
:costruzione sequenza che crea una sequenza vuota se inferiore è maggiore di limite superiore
> 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
Io non sono chiedendo le ragioni di questo strano comportamento - presumo che ora sia solo un'eredità con cui dobbiamo convivere. Invece, mi piacerebbe sapere se qualsiasi pacchetto implementa un operatore seq
che restituisce una sequenza vuota, in questo caso, come il seguente: le buone pratiche
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)
Esattamente quello che mi serve, grazie! Non l'ho provato prima. Peccato che la documentazione non includa un esempio per 'seq_len (0)' ... – krlmlr
Nessun errore - e grazie per il mio primo segno di spunta! :) –