【问题标题】:using else if in a function in R在 R 的函数中使用 else if
【发布时间】:2020-10-21 13:39:39
【问题描述】:

我正在尝试在 R 中的函数内使用 else if

new<-function(a,b,c,d){
if (a==1){
var1<-100+100+100
var2<-500+500+500
var3<-500-100

}else if (a==2){
var1<-100+100
var2<-500+500
var3<-500-10
} else if (a==3){
var1<-100
var2<-500
var3<-500
}

b<-var1-var2

c<- var2+var3

d<-var3-var1

if (b<100)
{print ("the value is good")
}else if (b>100)
{ print("check teh value")
}else 
{print ("repeat")
}
}

output<-new(3,b,c,d)

我觉得我错过了一些根本性的问题。我正在尝试使用 else if 来填充要用作输入以调用相同功能的值。

非常感谢您的帮助

【问题讨论】:

  • 你的函数返回了什么? (只有最后评估的表达式的值,因为你没有明确的return(...)
  • 您的预期结果是什么? a == 3,所以我们最终得到 var1b = -400,c = 1000d = 400。所以 if (b 满足并且你 print ("value is good")

标签: r function if-statement


【解决方案1】:

您可以简化为:

new <- function(a) {
  if (a == 1) {
    b <- -1200
  } else if (a == 2) {
    b <- -800
  } else if (a == 3) {
    b <- -400
  }
  
  if (b < 100)
  {
    print ("the value is good")
  } else if (b > 100)
  {
    print("check the value")
  } else
  {
    print ("repeat")
  }
  return(b) # for fun return the value of b
}

output <- new(2)

但是这个函数总是会产生打印“值很好”的副作用,因为 b 总是计算为负数。目的是什么? 如果您想将值 a 返回到 d,您可以按照您的示例进行中间计算并执行:return(list(a = a, b = b, c = c, d = d)) 而不是 return(b)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-28
    • 2015-01-14
    • 1970-01-01
    • 2016-10-13
    • 1970-01-01
    • 2021-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多