La seq
page de manuel indique ce qui suit (c'est moi qui souligne):
La description
Générez des séquences régulières.
seq
est un générique standard avec une méthode par défaut.seq.int
est une primitive qui peut être beaucoup plus rapide mais avec quelques restrictions .
Cependant, la page ne décrit pas réellement ces restrictions. Voici toutes les autres mentions de seq.int
là:
Arguments
[...]
length.out
longueur souhaitée de la séquence. Un nombre non négatif, qui pourseq
etseq.int
sera arrondi s'il est fractionnaire.[...]
Détails
[...]
L'interprétation des arguments sans nom de
seq
etseq.int
n'est pas standard, et il est recommandé de toujours nommer les arguments lors de la programmation.[...]
seq.int
est un générique interne qui distribue des méthodes pour "seq
" en fonction de la classe du premier argument fourni (avant la correspondance d'arguments).
seq.int
,seq_along
Etseq_len
sont primitif.Valeur
seq.int
et la méthode par défaut deseq
for numeric arguments renvoie un vecteur de type "integer
" ou "double
": les programmeurs ne doivent pas compter sur lequel.
Hormis le fait d'indiquer que les seq.int
répartitions seq
selon la classe de son premier argument, je ne vois aucune "restriction".
Alors, quelles sont ces restrictions?
seq
fonctionnent de la même manièreseq.int
, sauf considérablement plus rapidement, il n'est donc pas clair pourquoi utiliserseq
du tout. Peut être lié à twitter.com/BrodieGaslam/status/1196792003813621761seq.int
par habitude, mais j'ai vu ce commentaire dans la page de manuel et maintenant je voudrais savoir si j'ai pris des "risques" en l'utilisant sans réfléchir.seq(from = 0 + 1i, to = 10 + 1i, length.out = 11)
mais vous ne pouvez pas faire de même avecseq.int
.Réponses:
seq
est une fonction générique standard écrite en R.seq.int
est une fonction primitive écrite en C. Alors que les deux sont écrites pour faire le même travail, en raison des caprices de leurs plates-formes, elles peuvent parfois avoir certaines restrictions. Ce qui suit est un exemple.Notez que cela provient d'une ancienne version de
R
et est corrigé dans les versions actuelles. Ces types de bogues ont été observés tout au long du développement de R et ils ont été corrigés dès que possible. Les versions actuelles de seq et seq.int semblent maintenant presque identiques. Donc, il ne devrait plus y avoir de restrictionsseq.int
.la source