楼主: xiangqianzsh
43308 17

[问答] R中的if/else if 为何老是出错 [推广有奖]

11
yftadyz 发表于 2016-10-1 09:53:06
真是非常有用,我找了好长时间的错误

12
15652939484 发表于 2017-7-4 22:15:41
我觉得这种格式会更易写,也更易读
> x=c(1,2,3,4)
> for(i in 1:4){
+     if(x[i]==1){y[i]=1}
+     else if(x[i]==2){y[i]=22}
+     else if(x[i]==3)(y[i]=333)
+     else{y[i]=4444}
+ }
> y
[1]    1   22  333 4444
已有 1 人评分论坛币 收起 理由
admin_kefu + 20 热心帮助其他会员

总评分: 论坛币 + 20   查看全部评分

13
15652939484 发表于 2017-7-4 22:17:05

我觉得这种格式会更易写,也更易读
> x=c(1,2,3,4)
> for(i in 1:4){
+     if(x[i]==1){y[i]=1}
+     else if(x[i]==2){y[i]=22}
+     else if(x[i]==3)(y[i]=333)
+     else{y[i]=4444}
+ }
> y
[1]    1   22  333 4444

14
Ariel1991 发表于 2018-5-24 17:12:23
15652939484 发表于 2017-7-4 22:15
我觉得这种格式会更易写,也更易读
> x=c(1,2,3,4)
> for(i in 1:4){
看了几个帖子,可能的解决方法是调整格式。我调成了你这个格式,还是一样出错。苦恼中。
for(i in 1:35329){
+   if(AMXHhuzhe1$MIN_VISIBILITY<=30){foglevel=1}
+   else if(AMXHhuzhe1$MIN_VISIBILITY<=50&AMXHhuzhe1$MIN_VISIBILITY>30){foglevel=2}
+   else if(AMXHhuzhe1$MIN_VISIBILITY<=100&AMXHhuzhe1$MIN_VISIBILITY>50){foglevel=3}
+   else if(AMXHhuzhe1$MIN_VISIBILITY<=200&AMXHhuzhe1$MIN_VISIBILITY>100){foglevel=4}
+   else{foglevel=5}
+ }
Error in if (AMXHhuzhe1$MIN_VISIBILITY <= 30) { :
  missing value where TRUE/FALSE needed

15
Ariel1991 发表于 2018-5-24 17:12:27
15652939484 发表于 2017-7-4 22:15
我觉得这种格式会更易写,也更易读
> x=c(1,2,3,4)
> for(i in 1:4){
看了几个帖子,可能的解决方法是调整格式。我调成了你这个格式,还是一样出错。苦恼中。
for(i in 1:35329){
+   if(AMXHhuzhe1$MIN_VISIBILITY<=30){foglevel=1}
+   else if(AMXHhuzhe1$MIN_VISIBILITY<=50&AMXHhuzhe1$MIN_VISIBILITY>30){foglevel=2}
+   else if(AMXHhuzhe1$MIN_VISIBILITY<=100&AMXHhuzhe1$MIN_VISIBILITY>50){foglevel=3}
+   else if(AMXHhuzhe1$MIN_VISIBILITY<=200&AMXHhuzhe1$MIN_VISIBILITY>100){foglevel=4}
+   else{foglevel=5}
+ }
Error in if (AMXHhuzhe1$MIN_VISIBILITY <= 30) { :
  missing value where TRUE/FALSE needed

16
Ariel1991 发表于 2018-5-24 17:13:47
Ariel1991 发表于 2018-5-24 17:12
看了几个帖子,可能的解决方法是调整格式。我调成了你这个格式,还是一样出错。苦恼中。
for(i in 1:35 ...
  1. for(i in 1:35329){
  2. +   if(AMXHhuzhe1$MIN_VISIBILITY[i]<=30){foglevel[i]=1}
  3. +   else if(AMXHhuzhe1$MIN_VISIBILITY[i]<=50&AMXHhuzhe1$MIN_VISIBILITY[i]>30){foglevel[i]=2}
  4. +   else if(AMXHhuzhe1$MIN_VISIBILITY[i]<=100&AMXHhuzhe1$MIN_VISIBILITY[i]>50){foglevel[i]=3}
  5. +   else if(AMXHhuzhe1$MIN_VISIBILITY[i]<=200&AMXHhuzhe1$MIN_VISIBILITY[i]>100){foglevel[i]=4}
  6. +   else{foglevel[i]=5}
  7. + }
  8. Error in if (AMXHhuzhe1$MIN_VISIBILITY[i] <= 30) { :
  9.   missing value where TRUE/FALSE needed
复制代码

17
Ariel1991 发表于 2018-5-24 17:15:46
yywan0913 发表于 2014-5-28 09:23
结构  1 :  if()  xx  else    yy    一行;
结构  2:   if()  {xx} else  {yy}  
                或者 ...
结构三没有看明白。请问能举个简单例子吗?

18
15652939484 发表于 2018-5-30 00:26:32
Ariel1991 发表于 2018-5-24 17:12
看了几个帖子,可能的解决方法是调整格式。我调成了你这个格式,还是一样出错。苦恼中。
for(i in 1:35 ...
x=c(1,2,3,4)
for(i in 1:4){
    if(x==1){
      y <- NULL
      y=1}
     else if(x==2){y=22}
    else if(x==3)(y=333)
     else{y=4444}
}
y

之前少了一行,应该 把y的值初始化
其实 if else 出错的根源在于 R是逐行编译的,如果 else哪一行的  前面没有上一个if 的右括号"}"
那么之前在上一个 if 结束后, R 就以为 你对这个if 的操作结束了, 因此看到了一个else 不知道要拿她怎么办才会报错,但是在循环体的大括号中, R是要一次运行整个大括号内的内容,所以格式无所谓, else可以单独起一行

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-22 03:46