Quelles sont les restrictions sur seq.int?

15

La seqpage de manuel indique ce qui suit (c'est moi qui souligne):

La description

Générez des séquences régulières. seqest un générique standard avec une méthode par défaut. seq.intest 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.intlà:

Arguments

[...]

length.outlongueur souhaitée de la séquence. Un nombre non négatif, qui pour seqet seq.intsera arrondi s'il est fractionnaire.

[...]

Détails

[...]

L'interprétation des arguments sans nom de seqet seq.intn'est pas standard, et il est recommandé de toujours nommer les arguments lors de la programmation.

[...]

seq.intest 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_alongEt seq_lensont primitif.

Valeur

seq.intet la méthode par défaut de seqfor 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.intrépartitions seqselon la classe de son premier argument, je ne vois aucune "restriction".

Alors, quelles sont ces restrictions?

Wasabi
la source
Bon point, j'ajouterai que tous les exemples donnés dans le fichier d'aide seqfonctionnent de la même manière seq.int, sauf considérablement plus rapidement, il n'est donc pas clair pourquoi utiliser seqdu tout. Peut être lié à twitter.com/BrodieGaslam/status/1196792003813621761
Moody_Mudskipper
@Moody_Mudskipper c'est précisément pourquoi j'ai demandé: j'ai utilisé seq.intpar 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.
Wasabi
@Moody_Mudskipper et pour mémoire, "les documents n'ont jamais été mis à jour" serait une réponse tout à fait acceptable et sans surprise.
Wasabi
6
Je dirais "Pour seq (uniquement), jusqu'à deux de from, to et by peuvent être fournis en tant que valeurs complexes à condition que length.out ou along.with soit spécifié. Plus généralement, la méthode par défaut de seq traitera les objets classés avec pour les génériques du groupe Math, Ops et Summary. " explique une restriction. Vous pouvez le faire seq(from = 0 + 1i, to = 10 + 1i, length.out = 11)mais vous ne pouvez pas faire de même avec seq.int.
Roland
1
@Roland - vous devriez peut-être ajouter ce commentaire comme réponse
dww

Réponses:

5

seqest une fonction générique standard écrite en R. seq.intest 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.

entrez la description de l'image ici

Notez que cela provient d'une ancienne version de Ret 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 restrictions seq.int.

Santanu
la source
merci pour votre réponse, pouvez-vous poster du code (par exemple un reprex) au lieu d'une image, et inclure le commentaire de Roland dans votre réponse (s'il ne poste pas sa propre réponse entre-temps). Je peux également modifier votre réponse et le faire moi-même si cela vous convient.
Moody_Mudskipper