r - 确定 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
请指导
解决方案
你可以试试这个:
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
推荐阅读
- image - 图像与内核的卷积给出白色输出
- java - 未来与可完成的未来?对于这个用例 Completablefuture 会有什么不同吗?
- javascript - 有没有办法通过 json 使用 ajax 调用解析值或过滤检索到的 json 数据?
- c# - 工厂模式中使用的策略模式?
- java - 与 Android 项目中的源库相比,实现 AAR 库的意外结果
- mysql - 无法在 Windows 10 上安装 Mysql Server
- giphy - API 速率限制如何在 giphy 中起作用?
- python-3.x - 处理数学时如何“跳过”空白输入?(Python)
- sql - 如何根据 Precedence 更新状态?
- html - 在 Angular 2/4/5 中完成 html 绑定后触发的事件