Quais são as restrições no seq.int?

15

A seqpágina de manual declara o seguinte (ênfase minha):

Descrição

Gere seqüências regulares. seqé um genérico padrão com um método padrão. seq.inté um primitivo que pode ser muito mais rápido, mas tem algumas restrições .

A página, na verdade, não descreve quais são essas restrições. Aqui estão todas as outras menções a seq.intisso:

Argumentos

[...]

length.outcomprimento desejado da sequência. Um número não negativo, que para seqe seq.intserá arredondado se for fracionário.

[...]

Detalhes

[...]

A interpretação dos argumentos não nomeados seqe seq.intnão é padrão, e é recomendável sempre nomear os argumentos durante a programação.

[...]

seq.inté um genérico interno que envia métodos para " seq" com base na classe do primeiro argumento fornecido (antes da correspondência de argumentos).

seq.int, seq_alongE seq_lensão primitivo.

Valor

seq.inte o método padrão seqpara argumentos numéricos retorna um vetor do tipo " integer" ou " double": os programadores não devem confiar em qual.

Além de declarar que é seq.intdespachado de seqacordo com a classe de seu primeiro argumento, não vejo nenhuma "restrição".

Então, quais são essas restrições?

Wasabi
fonte
Bom ponto, acrescentarei que todos os exemplos fornecidos no arquivo de ajuda seqfuncionam da mesma maneira seq.int, exceto dramaticamente mais rápido, portanto não está claro por que usar seq. Pode estar relacionado ao twitter.com/BrodieGaslam/status/1196792003813621761
Moody_Mudskipper
@Moody_Mudskipper, foi exatamente por isso que perguntei: tenho usado seq.intpor hábito, mas vi esse comentário na página de manual e agora gostaria de saber se estou assumindo "riscos" ao usá-lo sem pensar.
Wasabi
@Moody_Mudskipper e, para que conste, "os documentos nunca foram atualizados" seria uma resposta totalmente aceitável e surpreendente.
Wasabi
6
Eu diria "Para seq (apenas), até dois de, para e por podem ser fornecidos como valores complexos, desde que length.out ou along.with seja especificado. Em geral, o método padrão de seq manipulará objetos classificados com métodos para os genéricos de grupo Matemática, Operações e Resumo ". explica uma restrição. Você pode fazer, seq(from = 0 + 1i, to = 10 + 1i, length.out = 11)mas não pode fazer o mesmo com seq.int.
Roland
11
@Roland - talvez você devesse adicionar esse comentário como resposta
dww 14/01

Respostas:

5

seqé uma função genérica padrão escrita em R. seq.inté uma função primitiva escrita em C. Enquanto os dois são escritos para fazer o mesmo trabalho, devido às peculiaridades de suas plataformas, às vezes eles podem ter certas restrições. O seguinte é um exemplo.

insira a descrição da imagem aqui

Observe que isso é de uma versão antiga Re é corrigido nas versões atuais. Esses tipos de bugs foram observados durante o desenvolvimento do R e foram corrigidos o mais rápido possível. As versões atuais do seq e seq.int agora parecem quase idênticas. Portanto, não deve haver mais restrições seq.int.

Santanu
fonte
obrigado por sua resposta, você pode postar código (por exemplo, um reprex) em vez de uma imagem e incluir o comentário de Roland na sua resposta (se ele não postar sua própria resposta enquanto isso). Também posso editar sua resposta e fazer isso sozinho, se você estiver bem.
Moody_Mudskipper 15/01