La seq
página del manual establece lo siguiente (el énfasis es mío):
Descripción
Generar secuencias regulares.
seq
es un genérico estándar con un método predeterminado.seq.int
Es un primitivo que puede ser mucho más rápido pero tiene algunas restricciones .
Sin embargo, la página en realidad no describe cuáles son esas restricciones. Aquí hay otra mención de seq.int
allí:
Argumentos
[...]
length.out
longitud deseada de la secuencia. Un número no negativo, que paraseq
yseq.int
se redondeará si es fraccionario.[...]
Detalles
[...]
La interpretación de los argumentos sin nombre de
seq
yseq.int
no es estándar, y se recomienda siempre nombrar los argumentos al programar.[...]
seq.int
es un genérico interno que distribuye métodos para "seq
" en función de la clase del primer argumento suministrado (antes de la coincidencia de argumentos).
seq.int
,seq_along
yseq_len
son primitivos.Valor
seq.int
y el método predeterminado deseq
para argumentos numéricos devuelve un vector de tipo "integer
" o "double
": los programadores no deberían confiar en cuál.
Aparte de afirmar que se seq.int
despacha de seq
acuerdo con la clase de su primer argumento, no veo ninguna "restricción".
Entonces, ¿cuáles son estas restricciones?
seq
funcionan igualseq.int
, excepto dramáticamente más rápido, por lo que no está claro por qué usarloseq
. Podría estar relacionado con twitter.com/BrodieGaslam/status/1196792003813621761seq.int
por costumbre, pero vi ese comentario en la página de manual y ahora me gustaría saber si he estado tomando "riesgos" al usarlo sin pensar.seq(from = 0 + 1i, to = 10 + 1i, length.out = 11)
pero no puedes hacer lo mismo conseq.int
.Respuestas:
seq
es una función genérica estándar escrita en R.seq.int
es una función primitiva escrita en C. Si bien ambos están escritos para hacer el mismo trabajo, debido a las peculiaridades de sus plataformas, a veces pueden tener ciertas restricciones. Lo siguiente es un ejemplo.Tenga en cuenta que esto es de una versión anterior de
R
y está corregido en las versiones actuales. Este tipo de errores se han observado a lo largo del desarrollo de R y se han corregido lo antes posible. Las versiones actuales de seq y seq.int ahora parecen casi idénticas. Entonces, no debería haber más restriccionesseq.int
.fuente