创建函数,忽略缺少的变量或声明缺少的变量等于NULL作为默认值

时间:2017-09-04 19:30:07

标签: r

我正在编写一个包含一些变量的函数,其中一些可能没有定义/声明。如果未定义/声明它们,它们如何自动作为" NULL" /被忽略为默认值。

combine <- function(GroupOne, GroupTwo) {
                    paste(GroupOne, GroupTwo)}

例如1,仅定义GroupOne

GroupOne <- "a"

结果

combine()
"a"

例如2:定义GroupOne和GroupTwo

GroupOne <- "a"
GroupTwo <- "b"

结果

combine()
"ab"

我试图将它与功能&#34;缺少&#34;,&#34;存在&#34;,&#34; hasArg&#34;但是还没有成功。我想听听你的见解!

非常感谢提前和干杯!

2 个答案:

答案 0 :(得分:1)

构建函数时,默认情况下可以将变量设置为NULL:

GroupOne <- "a"
GroupTwo <- "b"

combine <- function(GroupOne=NULL, GroupTwo=NULL){
  if(is.null(GroupOne) | is.null(GroupTwo)){
    paste0(GroupOne, GroupTwo)
  } else {
    paste(GroupOne, GroupTwo)
  }
}

combine()
character(0)

combine(GroupOne)
"a"

combine(GroupOne,GroupTwo)
"a b"

答案 1 :(得分:0)

如果我理解正确,以下将做你想要的。

combine <- function(GroupOne, GroupTwo) {
    if(missing(GroupOne)) GroupOne <- NULL
    if(missing(GroupTwo)) GroupTwo <- NULL
    paste(GroupOne, GroupTwo)
}

combine()
character(0)

GroupOne <- "a"
combine(GroupOne)
[1] "a "