Условно отсутствующие аргументы в функции R? - PullRequest
0 голосов
/ 22 апреля 2020

Я пытаюсь работать с функцией в R, которая позволяет передавать только один из двух аргументов через серию вызовов missing(arg). Я не могу легко изменить функцию. Мои данные таковы, что иногда я предоставляю один аргумент, а другой - другой. Возможно ли иметь какой-то вариант:

myFunction(arg1 = switch(condition == T, arg1, NULL), 
           arg2 = switch(condition == F, arg2, NULL))

Когда я запускаю такую ​​функцию, она считает функцию переключения как аргумент, а не объект NULL. Обертывание каждого switch в eval тоже не помогает.

Спасибо за помощь!

Пост-скрипт: я знаю, что это плохая практика, и мне нужно вызвать функцию, указанную в условии. Но это часть конвейера в стиле magrittr, который я бы не стал беспокоить.

1 Ответ

0 голосов
/ 22 апреля 2020

Я думаю, что ваше описание неверно. С вашим кодом, один из arg1 или arg2 будет NULL. Я подозреваю, что функция тестирует на отсутствие, а не тестирует NULL. Ни один из аргументов не пропущен.

Вместо этого вы можете выполнить

if (condition) myFunction(arg1 = arg1) else myFunction(arg2 = arg2)

Что касается сохранения в конвейере: вы, безусловно, можете заключить эту строку в функцию, совместимую с magrittr.

...