【问题标题】:Writing function with an if statement which executes when the statement is NULL or a string equivalent使用 if 语句编写函数,该语句在语句为 NULL 或等效字符串时执行
【发布时间】:2019-10-08 11:58:52
【问题描述】:

我想要一个 if 语句,当语句为 NULL 或等效字符串时执行:

somefun <- function (number1, number2, type=NULL) {
if (is.null(type) | type == "sum") {
    print(number1+number2)
    } else if (type == "product") {
    print(number1*number2)
    }}
# So that the two following lines lead to the same result

somefun(1,4)
somefun(1,4,type="sum")

然而第一个给出了错误:

Error in if (is.null(type) | type == "sum") { : 
  argument is of length zero

语法应该怎么写?

【问题讨论】:

  • 默认设置type="sum"怎么样?
  • 我同意上述说法;我认为如果我们知道这个函数的意图可能会有所帮助......
  • @user2974951 你说的完全正确,这让我一时想不开……

标签: r function if-statement null


【解决方案1】:

这是您需要使用|| 而不是| 的情况之一

somefun <- function (number1, number2, type=NULL) {
if (is.null(type) || type == "sum") {
    print(number1+number2)
    } else if (type == "product") {
    print(number1*number2)
    }
}


> somefun(1,4,type="sum")
[1] 5
> somefun(1,4,type=NULL)
[1] 5
> somefun(1,4)
[1] 5

如果我可以提出建议:

somefun2 <- function (number1, number2, type=NULL){
    if(is.null(type)){
        type <- "sum"
    }
    switch(type,
           "sum" = number1 + number2,
           "product" = number1 * number2
    )
}

【讨论】:

  • 感谢您的回答和建议。除了提高可读性之外,还有其他好处吗?
猜你喜欢
  • 2022-06-30
  • 2014-03-02
  • 1970-01-01
  • 2013-03-13
  • 2021-06-17
  • 2016-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多