¿Cuáles son las restricciones en seq.int?

15

La seqpágina del manual establece lo siguiente (el énfasis es mío):

Descripción

Generar secuencias regulares. seqes un genérico estándar con un método predeterminado. seq.intEs 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.intallí:

Argumentos

[...]

length.outlongitud deseada de la secuencia. Un número no negativo, que para seqy seq.intse redondeará si es fraccionario.

[...]

Detalles

[...]

La interpretación de los argumentos sin nombre de seqy seq.intno es estándar, y se recomienda siempre nombrar los argumentos al programar.

[...]

seq.intes 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_alongy seq_lenson primitivos.

Valor

seq.inty el método predeterminado de seqpara 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.intdespacha de seqacuerdo con la clase de su primer argumento, no veo ninguna "restricción".

Entonces, ¿cuáles son estas restricciones?

Wasabi
fuente
Buen punto, agregaré que todos los ejemplos dados en el archivo de ayuda seqfuncionan igual seq.int, excepto dramáticamente más rápido, por lo que no está claro por qué usarlo seq. Podría estar relacionado con twitter.com/BrodieGaslam/status/1196792003813621761
Moody_Mudskipper
@Moody_Mudskipper es precisamente por eso que pregunté: he estado usando seq.intpor 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.
Wasabi
@Moody_Mudskipper y para el registro, "los documentos nunca se actualizaron" sería una respuesta totalmente aceptable y poco sorprendente.
Wasabi
66
Yo diría "Para seq (solo), se pueden suministrar hasta dos de from, to y by como valores complejos siempre que se especifique length.out o along.with. Más generalmente, el método predeterminado de seq manejará objetos clasificados con métodos para los genéricos del grupo Matemáticas, Operaciones y Resumen ". explica una restricción Puedes hacer seq(from = 0 + 1i, to = 10 + 1i, length.out = 11)pero no puedes hacer lo mismo con seq.int.
Roland
1
@Roland - tal vez deberías agregar ese comentario como respuesta
dww

Respuestas:

5

seqes una función genérica estándar escrita en R. seq.intes 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.

ingrese la descripción de la imagen aquí

Tenga en cuenta que esto es de una versión anterior de Ry 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 restricciones seq.int.

Santanu
fuente
gracias por su respuesta, ¿puede publicar un código (por ejemplo, un reprex) en lugar de una imagen e incluir el comentario de Roland en su respuesta (si no publica su propia respuesta mientras tanto). También puedo editar tu respuesta y hacerlo yo mismo si eso está bien para ti.
Moody_Mudskipper