楼主: 蝇子
12576 10

[求助:关于if语句] [推广有奖]

  • 5关注
  • 2粉丝

讲师

70%

还不是VIP/贵宾

-

威望
0
论坛币
4798 个
通用积分
14.1678
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
802 点
帖子
163
精华
0
在线时间
890 小时
注册时间
2006-4-22
最后登录
2025-6-9

楼主
蝇子 发表于 2008-7-28 16:57:00 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

我想做“如果同时满足sh2$PROVINCE==21和sh2$HUKOU==1这两个条件,才进行下面的执行语句”

当我用if(sh2$PROVINCE==21 & sh2$HUKOU==1) 时,会出现“警告多于50个(用warnings()来显示第1个到第50个)”的提示

我查了下if()语句,说里面只能有一个条件

那如果我想实现我的目的,应该怎么办呢?

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:province warnings warning vince Warn 语句

回帖推荐

alphastatist 发表于6楼  查看完整内容

for(i in 1:100){if((AA==a) && (BB==b)) CC<-celse if((AA==aa) && (BB==bb)) CC<-cc;i<-i+1 #这句多余,或者让人费解}最好用个简单的例子来说一下,比如只循环5次等,否则不知道搂住目的是什么。

alphastatist 发表于4楼  查看完整内容

for(i in 1:100){if((AA==a) && (BB==b)) CC<-celse if((AA==aa) && (BB==bb)) CC<-cc;i<-i+1}

本帖被以下文库推荐

沙发
snoopyzhao 发表于 2008-7-29 07:55:00
你到少也应该把 warnings 贴出来看看
if() 中可以使用多个判断条件,没有问题的

藤椅
蝇子 发表于 2008-7-29 08:55:00

[求助:关于if语句]

它出现的warnings就是“警告多于50个(用warnings()来显示第1个到第50个)”。

我的目的是想达到"如果AA=a且BB=b,则CC=c;否则如果AA=aa且BB=bb,则CC=cc "

我写的语句是:

for(i in 1:100)
{if((AA==a & (BB==b)) CC<-c

else if((AA==aa) & (BB==bb)) CC<-cc;i<-i+1}

可是出现的结果是所有的记录都是CC=c了。

请问下应该怎么办呢?

谢谢!

板凳
alphastatist 发表于 2008-7-29 09:36:00

for(i in 1:100)
{if((AA==a) && (BB==b)) CC<-c

else if((AA==aa) && (BB==bb)) CC<-cc;i<-i+1}

已有 1 人评分论坛币 热心指数 收起 理由
crystal8832 + 10 + 1 热心帮助其他会员

总评分: 论坛币 + 10  热心指数 + 1   查看全部评分

http://www.pinggu.org/bbs/images/logo2.gif[/IMG][/URL]

报纸
蝇子 发表于 2008-7-29 10:16:00

感谢楼上的回复,我试了下,现在没有warnings了。

可是出来的结果还是达不到我的目的。现在所有的CC=c了。

地板
alphastatist 发表于 2008-7-29 11:20:00

for(i in 1:100)
{if((AA==a) && (BB==b)) CC<-c

else if((AA==aa) && (BB==bb)) CC<-cc;

i<-i+1 #这句多余,或者让人费解

}

最好用个简单的例子来说一下,比如只循环5次等,否则不知道搂住目的是什么。

http://www.pinggu.org/bbs/images/logo2.gif[/IMG][/URL]

7
snoopyzhao 发表于 2008-7-30 09:13:00
说实话,我一直没有明白 && 与 & 之间有啥区别,呵呵……

下面这段代码有错吗?
  1. <br/>
  2. for (i in 1:5) {<br/>
  3.     for (j in 1:5) {<br/>
  4.         if((i == 3) &amp; (j == 4)) print("ALL OK")<br/>
  5.         else if((i==4) &amp; (j==5)) print("ALL FALSE")<br/>
  6.     }<br/>
  7. }<br/>
复制代码

把 & 换成 && 也是一样的结果,呵呵……

8
snoopyzhao 发表于 2008-7-30 09:14:00
当出现的warnings就是“警告多于50个(用warnings()来显示第1个到第50个)” 时,你需要做的是用

warnings() 来获得具体的警告信息是啥?没有告之警告信息,那么就无法判断错误到底在什么地方,呵呵

9
janus 发表于 2008-7-30 09:51:00
'&' and '&&' indicate logical AND and '|' and '||' indicate
     logical OR.  The shorter form performs elementwise comparisons in
     much the same way as arithmetic operators.  The longer form
     evaluates left to right examining only the first element of each
     vector.  Evaluation proceeds only until the result is determined.
     The longer form is appropriate for programming control-flow and
     typically preferred in 'if' clauses.

无无无

10
janus 发表于 2008-7-30 10:05:00
有一点要注意的是, if(cond) expr
在这个语句中,cond是 “A length-one logical vector that is not 'NA'. Conditions of
          length greater than one are accepted with a warning, but only
          the first element is used.  Other types are coerced to
          logical if possible, ignoring any class”
if(sh2$PROVINCE==21 & sh2$HUKOU==1)
sh2$PROVINCE和sh2$HUKOU恐怕都应该是向量,在使用if的时候可能会出现这样的警告:
”Warning message:
In if (x == 1)  x <- x * 10 : 条件的长度大于一,因此只能用其第一元素“
如果用循环的话,不妨这样
for(i in 1:N) {
  if(sh2$PROVINCE==21 & sh2$HUKOU==1)  ....
}
这样做效率差一些,呵呵

无无无

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

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