我尝试在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来填充要用作输入的值,以调用相同的函数。
非常感谢您的帮助
发布于 2020-07-01 15:18:51
您可以简化为:
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)但是这个函数总是有打印"the value is good“的副作用,因为b总是计算为负数。目的是什么?如果你想返回值a到d,你可以按照你的例子进行中间计算,并且这样做:用return(b)代替return(list(a = a, b = b, c = c, d = d))。
https://stackoverflow.com/questions/62671210
复制相似问题