【问题标题】:Passing an if condition as function argument - Error unused arguments将 if 条件作为函数参数传递 - 错误未使用的参数
【发布时间】:2019-11-15 07:50:44
【问题描述】:

当我定义如下函数时,我不明白如何避免“未使用的参数”错误。

我使用 RStudio 版本 1.2.1335。

condition = function(cond)
{
  ifelse (cond == 0, value = 1, value = -1)

  return(value)
}

当我尝试运行该功能时,例如条件(0),我收到以下错误消息:

ifelse(cond == 0, value = 1, value = -1) 中的错误: 未使用的参数(值 = 1,值 = -1)

我该如何解决这个错误?

【问题讨论】:

  • ifelse里面的value = 去掉你可能需要condition <- function(cond) ifelse(cond == 0, 1, -1)
  • 仅供参考,为了让函数返回某些内容,您需要在函数内部定义该“某些内容”,在您的情况下为 value

标签: r


【解决方案1】:

ifelse 的用法是

ifelse(测试,是,否)

这里,“是”和“否”不需要任何赋值。如果有赋值,应该在ifelse函数之外

value <- ifelse(cond == 0, 1, -1)

在OP的函数中,它也不需要任何赋值然后return语句,因为我们可以提供单个语句

condition <- function(cond) ifelse(cond == 0, 1, -1) 

另外,ifelse 可以用算术方法替换值来替换

condition <- function(cond) c(-1, 1)[(!cond) + 1]

【讨论】:

    【解决方案2】:

    给你:

    condition = function(cond)
    {
      ifelse (cond == 0, value <- 1, value <- -1)
    
      return(value)
    }
    

    测试:

    > condition(0)
    [1] 1
    > condition(1)
    [1] -1
    

    您可以使用&lt;- 运算符将值分配给value。否则,R认为你将参数传递给ifelse,你会得到一个错误,因为没有valueargument 给ifelse

    > args(ifelse)
    function (test, yes, no) 
    NULL
    

    编辑

    请注意,除非您了解它的工作原理和原因,否则我不建议您这样做。最安全的解决方案是正确使用ifelse,正如akrun 所指出的那样。

    【讨论】:

    • 我不认为ifelse 会这样工作......或者至少我从未见过这样写:)
    • 真的,为什么?我不会推荐它,这是肯定的。它虽然符合 OP 的意图......
    猜你喜欢
    • 1970-01-01
    • 2011-11-02
    • 2021-04-13
    • 1970-01-01
    • 2013-01-27
    • 1970-01-01
    • 2011-03-20
    • 2023-04-02
    相关资源
    最近更新 更多