首页 > 解决方案 > 确定 R 函数参数是否唯一

问题描述

如果参数是唯一的,我有函数并希望抛出错误

到目前为止,我尝试过:

PrintLetters <- function(name, name2, name3){

  if (!unique(args)){
    stop("Enter 1 to 3 unique arguments")
  }

  print(paste(name,name2,name3,sep=" "))
}

PrintLetters("a","b","c")

和错误结果

Error in unique.default(args) : unique() applies only to vectors 

尝试将 args 保存到向量

PrintLetters <- function(name, name2, name3){

  v_args <- c(args)

  if (!unique(v_args)){
    stop("Enter 1 to 3 unique arguments")
  }

  print(paste(name,name2,name3,sep=" "))
}

PrintLetters("a","b","c")

新错误

Error in !unique(v_args) : invalid argument type

请指导

标签: rarguments

解决方案


你可以试试这个:

PrintLetters <- function(name, name2 = NULL, name3=NULL){

  args <- unlist(mget(names(formals())))
  if ( anyDuplicated(args) ){
    stop("Enter 1 to 3 unique arguments")
  }

  print(paste(name,name2,name3,sep=" "))
}

PrintLetters("a","b","c")
# [1] "a b c"
PrintLetters("a","b","a")
# Error in PrintLetters("a", "b", "a") : Enter 1 to 3 unique arguments

推荐阅读