The seq
halaman manual menyatakan berikut (penekanan):
Deskripsi
Hasilkan urutan teratur.
seq
adalah generik standar dengan metode default.seq.int
adalah primitif yang bisa lebih cepat tetapi memiliki beberapa batasan .
Namun, halaman tersebut tidak benar-benar menggambarkan batasan itu. Berikut ini setiap penyebutan lainnya seq.int
:
Argumen
[...]
length.out
panjang urutan yang diinginkan. Angka non-negatif, yang untukseq
danseq.int
akan dibulatkan jika fraksional.[...]
Detail
[...]
Penafsiran argumen yang tidak disebutkan namanya
seq
danseq.int
tidak standar, dan dianjurkan untuk selalu menyebutkan argumen saat pemrograman.[...]
seq.int
adalah generik internal yang mengirimkan metode untuk "seq
" berdasarkan kelas argumen yang disediakan pertama (sebelum pencocokan argumen).
seq.int
,seq_along
danseq_len
primitif.Nilai
seq.int
dan metode defaultseq
untuk argumen numerik mengembalikan vektor bertipe "integer
" atau "double
": programmer tidak boleh bergantung pada yang mana.
Selain menyatakan bahwa seq.int
pengiriman seq
sesuai dengan kelas argumen pertamanya, saya tidak melihat "batasan".
Jadi, batasan apa ini?
seq
bekerja sama denganseq.int
, kecuali secara dramatis lebih cepat, jadi tidak jelas mengapa digunakanseq
sama sekali. Mungkin terkait dengan twitter.com/BrodieGaslam/status/1196792003813621761seq.int
kebiasaan, tetapi melihat komentar itu di halaman manual dan sekarang saya ingin tahu apakah saya telah mengambil "risiko" dalam menggunakannya tanpa berpikir.seq(from = 0 + 1i, to = 10 + 1i, length.out = 11)
tetapi Anda tidak dapat melakukan hal yang sama dengannyaseq.int
.Jawaban:
seq
adalah fungsi generik standar yang ditulis dalam R.seq.int
adalah fungsi primitif yang ditulis dalam C. Sementara keduanya ditulis untuk melakukan pekerjaan yang sama, karena melakukan kebiasaan platform mereka, mereka kadang-kadang dapat memiliki batasan tertentu. Berikut ini adalah contohnya.Perhatikan bahwa ini dari versi lama
R
dan sudah diperbaiki di versi saat ini. Jenis bug ini telah diamati selama pengembangan R dan telah ditambal sesegera mungkin. Versi seq dan seq.int saat ini terlihat hampir sama. Jadi, seharusnya tidak ada batasan lagiseq.int
.sumber