在R中创建一个功能消息,以测试输入是否为字符串

时间:2019-05-24 10:49:04

标签: r if-statement

我想在函数中发出一条消息,告诉用户以字符串形式传递参数,即如果他们忘记了引号,则该消息应显示“使用引号”而不是“找不到对象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"

reprex package(v0.2.1)于2019-05-24创建

1 个答案:

答案 0 :(得分:4)

我们可以使用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"