我刚刚开始使用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
我不确定将真/假陈述放在等式中的哪个位置。
答案 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
替换下一个。