如何使用embedded if语句编写for和for循环的函数?

时间:2017-10-04 16:44:00

标签: r function for-loop if-statement

我刚刚开始使用R作为我参加的课程并且它要求整数值> 0(argument1),它将值< 25和> 75乘以设定的乘数(参数2),其他元素乘以不同的乘数(参数3)。

我已经拥有之前的h和s值:

h=sample(1:100,40)

s=c()
 for(i in 1:100){if(h[i]<25){s[i]<-h[i]*10}
else if(h[i]>75){s[i]<-h[i]*10}
else{s[i]<-h[i]*0.1}}
Error in if (h[i] < 25) { : missing value where TRUE/FALSE needed

错误消息显示在上面的for循环中,但如果我忽略它,我仍然得到答案。我想但不会在这个功能中工作。

fun2<-function(x=s,arg1,arg2,arg3)
{w<-for(i in 1:100){if(h[i]>0){s[i]<-h[i]*arg1}else if(h[i]<25){s[i]<-
h[i]*arg2}
else if(h[i]>75){s[i]<-h[i]*arg2}
else{s[i]<-h[i]*arg3}}
return(w)}

fun2(arg1=10,arg2=3,arg3=10)
Error in if (h[i] > 0) { : missing value where TRUE/FALSE needed

我不确定将真/假陈述放在等式中的哪个位置。

1 个答案:

答案 0 :(得分:0)

看看h = sample(1:100,100)

您将看到您尝试循环100多个索引,同时只有40个元素。如果您将第一行替换为w,则第一行代码应该有效。

至于第二次尝试,您不能为变量分配for循环。在循环之前存储变量fun2<-function(x=s,arg1,arg2,arg3){ w<-s for(i in 1:100){ if(h[i]>0){ w[i]<-h[i]*arg1 } ... # some if statement return(w) } 并分配您正在计算的新值,如下所示。

if

作为旁注,您的功能无法为您提供所需的结果,因为您的第一个else if条件会丢弃以下if(h[i] < 25 & h[i]> 0)。我会删除第一个if块,然后用ion-item替换下一个。