Функция R, которая требует 2 аргумента, но принимает 3 - PullRequest
0 голосов
/ 14 июля 2020

Я создаю функцию в R, которая вычисляет пифагорову треугольника. Функция может принимать 3 аргумента: a, b, c. Однако для этого требуется ввести только 2 из них, в противном случае возникает ошибка, поскольку пифагорейское выражение можно вычислить только с 2-мя сторонами. Как сделать функцию, которая имеет 3 входа, но требует только 2?

1 Ответ

0 голосов
/ 14 июля 2020

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

pythag <- function(a=NULL, b=NULL, c=NULL) {
  if(length(c(a, b, c))!=2)
    stop("You must supply exactly 2 of a, b and c")
...
}

Если вы хотите добавить другие проверки, такие как числовые c значения, вы можете сделать это индивидуально:

  if(is.null(a) && is.numeric(b) && is.numeric(c))
    return(sqrt(c^2 - b^2))
  else if(is.null(b) && is.numeric(a) && is.numeric(c))
    return(sqrt(c^2 - a^2))
  else if(is.null(c) && is.numeric(a) && is.numeric(b))
    return(sqrt(a^2 + b^2))
  
  print("All arguments must be numeric")
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...