将match.arg用于多个参数时出错

时间:2016-12-20 09:57:00

标签: r function match apply

我不熟悉在R函数中使用match.arg作为默认值规范。我对以下行为有疑问。

trial_func <- function(a=c("1","9","20"),b=c("12","3"),d=c("55","01")){
  a <- match.arg(a)
  b <- match.arg(b)
  d <- match.arg(d)
  list(a,b,d)
}
trial_func()
# [[1]]
# [1] "1"
# 
# [[2]]
# [1] "12"
# 
# [[3]]
# [1] "55"

当我尝试对每个单独的参数使用match.arg时,它按预期工作。但是当我尝试使用lapply来减少编写的代码时,会导致以下问题。

trial_func_apply <- function(a=c("1","9","20"),b=c("12","3"),d=c("55","01")){
  lapply(list(a,b,d), match.arg)
}
trial_func_apply()
  

FUN中的错误(X [[i]],...):'arg'的长度必须为1

我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:0)

在调查了一下之后,你需要传递你的字符向量为NULL的论据,即

PostWebTest