Які обмеження щодо seq.int?


15

На seqсторінці чоловіка зазначено наступне (моє наголос):

Опис

Утворіть регулярні послідовності. seqє стандартним загальним із методом за замовчуванням. seq.intце примітив, який може бути набагато швидшим, але має кілька обмежень .

Сторінка насправді не описує, що таке обмеження. Ось будь-яка інша згадка seq.intтам:

Аргументи

[...]

length.outбажана довжина послідовності. Невід’ємне число, яке для seqі seq.intбуде округлене, якщо дробове.

[...]

Деталі

[...]

Інтерпретація неназваних аргументів seqі seq.intне є стандартною, і рекомендується завжди називати аргументи при програмуванні.

[...]

seq.intє внутрішнім загальним, яке розсилає методи " seq" на основі класу першого наданого аргументу (перед узгодженням аргументів).

seq.int, seq_alongі seq_lenє примітивними.

Значення

seq.intі метод за замовчуванням seqдля числових аргументів повертає вектор типу " integer" або " double": програмісти не повинні покладатися на який.

Крім того, що seq.intзаявляю, що розсилає seqвідповідно до класу свого першого аргументу, я не бачу жодних "обмежень".

Отже, що це за обмеження?


Хороший момент, я додам, що всі приклади, наведені у довідковому файлі, для seqроботи все одно seq.int, окрім різко швидшого, тому не зрозуміло, для чого seqвзагалі використовувати . Може бути пов’язане з twitter.com/BrodieGaslam/status/1196792003813621761
Moody_Mudskipper

@Moody_Mudskipper саме тому я запитав: я користувався seq.intза звичкою, але побачив цей коментар на сторінці чоловіка, і тепер я хотів би дізнатися, чи не ризикував я використовувати його.
Васабі

@Moody_Mudskipper і для запису "документи ніколи не оновлювалися" було б цілком прийнятною і не дивною відповіддю.
Васабі

6
Я б сказав: "Для seq (тільки), до двох з від, до і може бути подано у вигляді складних значень, вказаних length.out або along.with. Зазвичай, метод seq за замовчуванням буде обробляти класифіковані об'єкти з методи для загальної групи математики, Ops та Summary. " пояснює обмеження. Ви можете зробити, seq(from = 0 + 1i, to = 10 + 1i, length.out = 11)але не можете зробити те ж саме з seq.int.
Роланд

1
@Roland - може бути , ви повинні додати , що коментар як відповідь
DWW

Відповіді:


5

seq- це стандартна родова функція, написана на R. seq.int- це примітивна функція, написана на C. Хоча обидва вони написані, щоб виконувати одну і ту ж роботу, у зв'язку з вигадками своїх платформ, вони іноді можуть мати певні обмеження. Далі наведено приклад.

введіть тут опис зображення

Зауважте, що це від старої версії Rта зафіксовано в поточних версіях. Ці види помилок спостерігалися протягом усього розвитку Р, і вони були виправлені якнайшвидше. Поточні версії seq і seq.int зараз виглядають майже однаково. Отже, більше жодних обмежень щодо цього не повинно бути seq.int.


дякую за вашу відповідь, чи можете ви замість зображення розмістити код (наприклад, репрекс) і включити коментар Роланда у свою відповідь (якщо він тим часом не публікує власну відповідь). Я також можу відредагувати вашу відповідь і зробити це самостійно, якщо це добре для вас.
Moody_Mudskipper
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.