Параметры функции R - Могу ли я указать, что один или другой (но не оба) будут заполнены?
В R можно настроить функции с необязательными аргументами, указав значение по умолчанию для аргумента. Например, если мои аргументы x и y=0, то функция требует ввода для x. Он будет использовать вход для y, если он задан, но установит y=0, если значение для y не задано.
Иногда мне нужен хотя бы один из двух параметров, но получение обоих может быть опасным, если ввод неправильный.
В качестве примера того, о чем я думаю, рассмотрим, что в наборе данных могут быть столбцы для "сдвига" (AM, PM, Night - фактор) и времени суток. Если у меня есть время суток, я могу рассчитать смещение, и получить значение для этого параметра не нужно. Если я получаю сдвиг в качестве входа, то мне не нужно время суток. Я хочу приблизительно узнать, в какое время дня произошло событие, поэтому мне нужна та или иная информация. К сожалению, когда я получаю оба входа, возможно, что есть несоответствие - время ввода может быть 8 утра, а сдвиг входа может быть сдвиг PM. Это проблема.
Есть ли способ настроить это требование (получить сдвиг или получить время, но не получить оба) в параметрах функции (в определении функции), или мне нужно указать оба в качестве необязательных параметров и выполнить проверку в пределах функция (т.е. хотя бы одна или другая, но не несоответствие)?
1 ответ
Нет, вы не можете сделать это в сигнатуре функции.
Ваши варианты:
- Всегда принимайте оба аргумента, игнорируя один, когда предоставлен другой. Это не редкость, и иногда вы видите заметки на страницах документации типа "если аргумент
foo
не являетсяNULL
этот аргумент игнорируется ". - Вручную проверьте взаимную исключительность и выдайте сообщение об ошибке или предупреждение, если оба они предусмотрены.