Функция R не выдает ошибку, как ожидалось - PullRequest
0 голосов
/ 31 мая 2018

В конце вопроса находится скрипт (плюс на github ).Репозиторий GitHub здесь и может быть установлен с

install.packages("devtools")
devtools::install_github("ArtieLadie/RanglaPunjab")

MergePalette(name,name2) принимает два имени.Если человек передает только одно имя, я хочу выполнить следующее, а затем выйти из функции:

Enter 2 valid palettes. Run ListPalette() for list of palettes.

К сожалению, когда я выполняю MergePalette("Teej"), я получаю

Error in MergePalette("Teej") : argument "name2" is missing, with no default

Как это исправить

MergePalette <- function(name,name2){

  pal <-  RanglaPunjab(name)

  if (is.null(name2)){
    stop("Enter 2 valid palettes. Run ListPalette() for list of palettes.")
 }
  pal2 <-  RanglaPunjab(name2)

  new_pal <-unique(c(pal,pal2))

  new_pal
}

1 Ответ

0 голосов
/ 31 мая 2018

Два метода:

  1. Предпочтение : проверка на отсутствие:

    MergePalette <- function(name,name2){
      if (missing(name2)) { stop(...) }
    
  2. Определение значения по умолчанию:NULL в формальностях, и функция работает:

    MergePalette <- function(name,name2=NULL){
      if (is.null(name2)) { stop(...) }
    

    Если пользователь (случайно) предоставляет аргумент для name2, который сам по себе NULL, сообщение об ошибке будет сбивать с толку.Как заметил @Moody_Mudskipper, устанавливая значение по умолчанию NULL, вы неявно говорите пользователю, что этот аргумент является необязательным и / или что NULL в порядке.При этом я полагаю, что этот вариант не подходит для этого вопроса / использования.

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