Параметры функции R - Могу ли я указать, что один или другой (но не оба) будут заполнены?

В R можно настроить функции с необязательными аргументами, указав значение по умолчанию для аргумента. Например, если мои аргументы x и y=0, то функция требует ввода для x. Он будет использовать вход для y, если он задан, но установит y=0, если значение для y не задано.

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

В качестве примера того, о чем я думаю, рассмотрим, что в наборе данных могут быть столбцы для "сдвига" (AM, PM, Night - фактор) и времени суток. Если у меня есть время суток, я могу рассчитать смещение, и получить значение для этого параметра не нужно. Если я получаю сдвиг в качестве входа, то мне не нужно время суток. Я хочу приблизительно узнать, в какое время дня произошло событие, поэтому мне нужна та или иная информация. К сожалению, когда я получаю оба входа, возможно, что есть несоответствие - время ввода может быть 8 утра, а сдвиг входа может быть сдвиг PM. Это проблема.

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

1 ответ

Нет, вы не можете сделать это в сигнатуре функции.

Ваши варианты:

  1. Всегда принимайте оба аргумента, игнорируя один, когда предоставлен другой. Это не редкость, и иногда вы видите заметки на страницах документации типа "если аргумент foo не является NULLэтот аргумент игнорируется ".
  2. Вручную проверьте взаимную исключительность и выдайте сообщение об ошибке или предупреждение, если оба они предусмотрены.
Другие вопросы по тегам