2015-08-15 4 views
2

Я получаю сообщение об ошибке, которое я действительно не понимаю. Я просто возился с генерацией некоторых последовательностей, и я столкнулся с этой проблемой:R seq слишком много аргументов?

Это должно создать последовательность из 50 чисел.

seq.int(from=1,to=1000,by=5,length.out=50) 

Но если я введу это в консоли я получаю сообщение об ошибке:

Ошибка в seq.int (от = 1, к = 1000, по = 5, length.out = 50):
слишком много аргументов

Если я смотрю на помощь (?seq), в разделе Usage есть эта линия там, что делает его, кажется, как будто я функция называется правильно, и это позволяет многим количество аргументов:

seq.int (от, до, по, length.out, along.with, ...)

Так что, черт возьми, происходит? Я упускаю что-то фундаментальное или устарели документы?

ПРИМЕЧАНИЕ Аргументы, которые я предоставляю функции в примере кода, приведены только для примера. Я не пытаюсь решить конкретную проблему, просто любопытно, почему я получаю сообщение об ошибке.

+1

это имеет смысл, потому что либо вы избыточны, указав оба, либо вы даете противоречивую информацию - то есть каждый подразумевает другую. – MichaelChirico

+2

@MichaelChirico Я не думаю, что это имеет смысл. Я могу представить себе сценарий, когда вы не знаете apriori аргументы 'from' и' to' и передаете его в пределах некоторой функции (или функция получает их от пользователя), и вы всегда хотите, чтобы последовательность была '5' и остановка после 50 результатов. В этом случае, когда вы достигаете 246. Я думаю, что это имеет смысл, не говоря уже о том, что это не документировано. Конечно, вы можете сделать это, как в этом «ответе» ниже, но это неэффективно, потому что вы сначала вычисляете весь вектор. –

+0

@MichaelChirico Я согласен с Дэвидом, это не имеет никакого смысла, и это не избыточно. Я могу знать, из-за, но не длиной, например. Да, я могу вычислить все это сам, но разве это не значит, что цель состоит в том, чтобы иметь такую ​​функцию? –

ответ

0

Нет, нет ничего фундаментального для языка R, которого я отсутствовал, что было источником проблемы. Проблема в том, что документы, по крайней мере, на момент написания, вводят в заблуждение и/или неверны.

4

Непонятно, что вы ожидаете от вывода этой строки кода, и вы получаете сообщение об ошибке, потому что R не хочет разрешать противоречия для вас.

Вот несколько допустимых результатов и строка кода, которую вы использовали бы для достижения каждого. Это тот случай, когда вам нужно решить для себя, какой подход к использованию с учетом задачи вы имеете в виду:

Override length.out

[1] 1 6 11 16 21 26 31 36 41 46 51 56 61 66 71 76 81 86 
    ... 
[199] 991 996 

#via: 
seq.int(from=1,to=1000,by=5) 

Override by

[1] 1.00000 21.38776 41.77551 62.16327 82.55102 102.93878 123.32653 
[8] 143.71429 164.10204 184.48980 204.87755 225.26531 245.65306 266.04082 
[15] 286.42857 306.81633 327.20408 347.59184 367.97959 388.36735 408.75510 
[22] 429.14286 449.53061 469.91837 490.30612 510.69388 531.08163 551.46939 
[29] 571.85714 592.24490 612.63265 633.02041 653.40816 673.79592 694.18367 
[36] 714.57143 734.95918 755.34694 775.73469 796.12245 816.51020 836.89796 
[43] 857.28571 877.67347 898.06122 918.44898 938.83673 959.22449 979.61224 
[50] 1000.00000 

#via: 
seq.int(from=1,to=1000,length.out=50) 

Override to

[1] 1 6 11 16 21 26 31 36 41 46 51 56 61 66 71 76 81 86 91 96 101 
[22] 106 111 116 121 126 131 136 141 146 151 156 161 166 171 176 181 186 191 196 201 206 
[43] 211 216 221 226 231 236 241 246 

#via: 
seq.int(from=1,by=5,length.out=50) 

Переопределение from

[1] 755 760 765 770 775 780 785 790 795 800 805 810 815 820 825 830 835 840 
[19] 845 850 855 860 865 870 875 880 885 890 895 900 905 910 915 920 925 930 
[37] 935 940 945 950 955 960 965 970 975 980 985 990 995 1000 

#via: 
seq.int(to=1000,by=5,length.out=50) 

априорной, R не имеет возможности сказать, какой из выше вы хотели бы, и не должно. Вы, как программист, должны решить, какие из них имеют приоритет.

И вы правы, что это должно быть задокументировано; на данный момент, взгляните на , как это было связано с @nongkrong.

+2

Не стесняйтесь предлагать изменения на 'r-devel @ r-project.org' ... (а не просто« кто-то должен это исправить », но« вот некоторые изменения, которые я сделал на существующей странице руководства, в форме различий из текущей версии SVN «... Ричи Коттон недавно добился успеха в предоставлении улучшений документации) –

+5

Но как мы можем это сделать в' dplyr'? –

+0

Мой вопрос не имеет к этому никакого отношения. Я знаю, как генерировать последовательности по-разному, и я даже упоминаю, что аргументы, которые я предоставил, являются примерами, а не для решения какой-либо конкретной проблемы. Правильный ответ заключается в том, что документация неверна/неясна. –