将if条件作为函数参数传递-错误的未使用参数

时间:2019-07-04 14:36:55

标签: r

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

我使用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)

如何解决此错误?

2 个答案:

答案 0 :(得分:2)

ifelse的用法是

  

ifelse(测试,是,否)

在这里,“ yes”和“ no”不需要任何赋值。如果有任何分配,则应在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]

答案 1 :(得分:1)

您在这里:

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

  return(value)
}

测试:

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

您可以使用value运算符将值分配给<-。否则,R认为您正在向ifelse传递参数,并且由于没有value的{​​{1}}参数而导致错误:

ifelse

修改

请注意,除非您了解它的工作方式和原因,否则我不建议您这样做。如akrun所指出,最安全的解决方案是正确使用> args(ifelse) function (test, yes, no) NULL