Die seq
Manpage enthält Folgendes (Hervorhebung von mir):
Beschreibung
Generieren Sie regelmäßige Sequenzen.
seq
ist ein Standard-Generikum mit einer Standardmethode.seq.int
ist ein Grundelement, das viel schneller sein kann, aber einige Einschränkungen aufweist .
Die Seite beschreibt jedoch nicht wirklich, was diese Einschränkungen sind. Hier ist jede andere Erwähnung von seq.int
dort:
Argumente
[...]
length.out
gewünschte Länge der Sequenz. Eine nicht negative Zahl, die fürseq
undseq.int
aufgerundet wird, wenn sie gebrochen ist.[...]
Einzelheiten
[...]
Die Interpretation der unbenannten Argumente von
seq
undseq.int
ist nicht Standard, und es wird empfohlen, die Argumente beim Programmieren immer zu benennen.[...]
seq.int
ist ein internes Generikum, das Methoden für "seq
" basierend auf der Klasse des ersten angegebenen Arguments (vor dem Argumentabgleich) auslöst.
seq.int
,seq_along
Undseq_len
sind primitiv.Wert
seq.int
und die Standardmethodeseq
für numerische Argumente gibt einen Vektor vom Typ "integer
" oder "double
" zurück: Programmierer sollten sich nicht auf welchen verlassen.
Abgesehen von der Angabe, dass seq.int
Sendungen seq
gemäß der Klasse des ersten Arguments gesendet werden, sehe ich keine "Einschränkungen".
Was sind diese Einschränkungen?
seq
Arbeit gleich sindseq.int
, außer dramatisch schneller, so dass es nicht klar ist, warumseq
überhaupt verwendet werden.seq.int
aus Gewohnheit verwendet, aber diesen Kommentar auf der Manpage gesehen, und jetzt möchte ich wissen, ob ich irgendwelche "Risiken" eingegangen bin , wenn ich ihn gedankenlos verwendet habe.seq(from = 0 + 1i, to = 10 + 1i, length.out = 11)
aber Sie können nicht dasselbe tunseq.int
.Antworten:
seq
ist eine generische Standardfunktion, die in R geschrieben ist.seq.int
ist eine primitive Funktion, die in C geschrieben ist. Während beide geschrieben sind, um denselben Job zu erledigen, können sie aufgrund der Macken ihrer Plattformen manchmal bestimmte Einschränkungen haben. Das Folgende ist ein Beispiel.Beachten Sie, dass dies aus einer alten Version von stammt
R
und in den aktuellen Versionen behoben ist. Diese Art von Fehlern wurde während der gesamten Entwicklung von R beobachtet und so schnell wie möglich behoben. Die aktuellen Versionen von seq und seq.int sehen jetzt fast identisch aus. Es sollte also keine Einschränkungen mehr gebenseq.int
.quelle