Метод для определения, было ли дано значение в вызове функции - PullRequest
0 голосов
/ 13 сентября 2018

Я пишу функцию, есть одна часть функции, которая может принимать одно значение или вектор или сохранять значение по умолчанию, если в вызове функции ничего не указано.

В приведенном ниже коде «a» задается по умолчанию 0, а затем в функции есть оператор if, чтобы увидеть, равно ли «a» 0 или присвоено ли ему значение.

Если я вызываю функцию, используя одно значение, вектор, или оставляю это поле пустым, выводится ожидаемый результат. Если заданный ему вектор имеет длину более 1, я получаю ожидаемое предупреждающее сообщение (несмотря на то, что функция все еще работает): «условие имеет длину> 1, и будет использоваться только первый элемент»

Поэтому мой запрос - это лучший способ проверить, было ли "a" оставлено пустым и оставлено ли оно пустым для запуска фрагмента кода (в данном случае для вывода "default") или if " «было дано значение, чтобы затем выполнить какой-то другой код (в данном случае, чтобы напечатать« данное значение ») без предупреждения, если вектор назначен« а », когда я вызываю функцию.

Пример кода следующий:

#Function
ExampleFunction<-function(a=0)

{
if  (a==0)
print ("default")
else{print("value given")}
}

#Run function using a vector which gives the warning message 
abc<-c(1,2,3)
ExampleFunction(abc)

1 Ответ

0 голосов
/ 13 сентября 2018

Предупреждение видно, потому что при оценке оператора if R требуется один логический тип, не является булевым вектором, поэтому предупреждение появляется, когда вы пытаетесь отправить abc <- c(1,2,3) только первое значение вектора abc, равное 1, которое присваивается параметру a в функции. Я бы посоветовал вам прочитать о «Именованных аргументах» в R.

Тем временем вы можете поставить проверку длины параметра a вместе с его значением, чтобы увидеть, было ли ему присвоено ненулевое значение при вызове функции. Надеюсь, это поможет!

Ссылки на именованные аргументы: Аргументы функции по умолчанию и именованные значения
https://www.r -bloggers.com / r-tip-force-named-arguments /
https://www.safaribooksonline.com/library/view/r-in-a/9781449358204/ch09s05.html

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