Quali sono le restrizioni su seq.int?


15

La seqpagina man indica quanto segue (enfasi sulla mia):

Descrizione

Genera sequenze regolari. seqè un generico standard con un metodo predefinito. seq.intè una primitiva che può essere molto più veloce ma ha alcune restrizioni .

La pagina in realtà non descrive quali siano queste restrizioni, però. Ecco ogni altra menzione di seq.intlì:

argomenti

[...]

length.outlunghezza desiderata della sequenza. Un numero non negativo, che per seqe seq.intsarà arrotondato per eccesso se frazionario.

[...]

Dettagli

[...]

L'interpretazione degli argomenti senza nome di seqe seq.intnon è standard ed è consigliabile nominare sempre gli argomenti durante la programmazione.

[...]

seq.intè un generico interno che invia i metodi per " seq" in base alla classe del primo argomento fornito (prima della corrispondenza degli argomenti).

seq.int, seq_alongE seq_lensono primitivi.

Valore

seq.inte il metodo predefinito di seqper argomenti numerici restituisce un vettore di tipo " integer" o " double": i programmatori non dovrebbero fare affidamento su quale.

A parte affermare che le seq.intspedizioni sono in seqaccordo con la classe del suo primo argomento, non vedo alcuna "restrizione".

Quindi, quali sono queste restrizioni?


Bene, aggiungerò che tutti gli esempi forniti nel file della guida seqfunzionano tutti allo stesso modo seq.int, ad eccezione di quelli notevolmente più veloci, quindi non è chiaro perché utilizzarli seqaffatto. Potrebbe essere correlato a twitter.com/BrodieGaslam/status/1196792003813621761
Moody_Mudskipper

@Moody_Mudskipper è proprio per questo che ho chiesto: sto usando seq.intl'abitudine, ma ho visto quel commento nella pagina man e ora vorrei sapere se ho preso dei "rischi" nell'usarlo senza pensarci.
Wasabi il

@Moody_Mudskipper e per la cronaca, "i documenti non sono mai stati aggiornati" sarebbe una risposta del tutto accettabile e sorprendente.
Wasabi il

6
Direi "Per seq (solo), fino a due di da, a e da possono essere forniti come valori complessi forniti length.out o along.with è specificato. Più in generale, il metodo predefinito di seq gestirà gli oggetti classificati con metodi per i generici di gruppi matematici, operativi e di riepilogo. " spiega una restrizione. Puoi farlo seq(from = 0 + 1i, to = 10 + 1i, length.out = 11)ma non puoi fare lo stesso con seq.int.
Roland

1
@Roland - forse dovresti aggiungere quel commento come risposta
dww

Risposte:


5

seqè una funzione generica standard scritta in R. seq.intè una funzione primitiva scritta in C. Mentre entrambi sono scritti per fare lo stesso lavoro, a causa delle stranezze delle loro piattaforme, a volte possono avere alcune restrizioni. Quanto segue è un esempio.

inserisci qui la descrizione dell'immagine

Si noti che questo proviene da una versione precedente di Red è stato risolto nelle versioni correnti. Questi tipi di bug sono stati osservati durante lo sviluppo di R e sono stati corretti il ​​più presto possibile. Le versioni attuali di seq e seq.int ora sembrano quasi identiche. Quindi, non ci dovrebbero essere più restrizioni seq.int.


grazie per la tua risposta, puoi pubblicare un codice (ad esempio un reprex) anziché un'immagine, e includere il commento di Roland nella tua risposta (se nel frattempo non pubblica la sua risposta). Posso anche modificare la tua risposta e farlo da solo se va bene per te.
Moody_Mudskipper,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.