Создание функционального сообщения в R, которое проверяет, является ли входная строка - PullRequest
0 голосов
/ 24 мая 2019

Я хочу сделать сообщение в своей функции, которое говорит пользователю передать аргумент в виде строки, то есть, если они забывают кавычки, то в сообщении должно быть сказано «использовать кавычки», а не «объект X не найден» ». Это возможно?

print_name <- function(name){
  if (!is.character(name)){
    stop("Name should be a character")
  }
  else {
    print(name)
  }
}

print_name(david)
#> Error in print_name(david): object 'david' not found

print_name("david")
#> [1] "david"

Создано в 2019-05-24 с помощью пакета представительства (v0.2.1)

1 Ответ

4 голосов
/ 24 мая 2019

Мы можем использовать tryCatch

print_name <- function(name){
   tryCatch({
     if (is.character(name))
       print(name)
     else
       print("not a character")
    }, error = function(e) {
    stop("Name should be a character - use quotes!")
  })
}

и затем запустить функцию

print_name(david)

Ошибка в значении [3L]: имя должно быть символом - используйте кавычки!

print_name("david")
#[1] "david"

print_name(2)
#[1] "not a character"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...