作者oldjojotenya (旧舅舅)
看板R_Language
标题[问题] ||的用法
时间Sat Oct 25 21:19:19 2014
[问题类型]:
程式谘询
[软体熟悉度]:
新手,用coursera自己乱学
[问题叙述]:
以下是我写的程式码:
outcome <- "heart attack"
if(outcome != "heart failure" || outcome != "heart attack" ||
outcome != "pnuemonia"){
stop("invalid outcome")
}
结果跑出以下警告:
错误: invalid outcome
我有两个问题想请教版上大大:
问题一、为何我赋值给outcome的内容明明是不符if内条件的,但最後还是执行了stop()?
问题二、查了一下||只能用於raw或logical或‘number-like’ vectors,所以我就不能
把程式写成 if(outcome != "heart failure" || "heart attack" || "pnuemonia),
请问有没有更简洁的方式表达我的outcome不能等於"heart failure"、"heart attack"
或"pnuemonia"这三个character其中之一的方法?
谢谢^^
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 110.73.53.206
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/R_Language/M.1414243161.A.1CE.html
※ 编辑: oldjojotenya (110.73.53.206), 10/25/2014 21:20:14
※ 编辑: oldjojotenya (110.73.53.206), 10/25/2014 21:21:02
※ 编辑: oldjojotenya (110.73.53.206), 10/25/2014 21:22:12
1F:推 Edster: outcome %in% c(heart failure, heart attack, ...) 10/25 23:24
2F:→ Edster: 看你的 outcome 只有一个值. 若是有很多个就反过来写.. 10/25 23:26
3F:→ obarisk: if内第一个表达式为真 10/25 23:51
4F:→ oldjojotenya: 谢谢E大我成功了! 10/26 19:35
5F:→ oldjojotenya: 谢谢o大,已理解 10/26 19:37
6F:→ andrew43: a <- 1 ; !(a == 2 | a == 3 | a == 4) 为所求 10/26 19:49
7F:→ andrew43: 我猜你要的写法是这个。不过Edster的写法更好懂。 10/26 19:50
8F:→ oldjojotenya: 原来是把!放在外面,刚试过可以了,谢谢a大! 10/27 00:43
9F:→ gsuper: 尽量不要用 == 或 != , 因为对 NA 会有问题 11/03 20:13
10F:→ gsuper: 改用 %in% , all() , any() 这些比较好用 11/03 20:14
11F:→ gsuper: 还有就是你的 || 写法没问题, 是因为三者中任一项为 TRUE 11/03 20:15
12F:→ gsuper: 其结果就是 TRUE 11/03 20:16
13F:→ gsuper: 你的第一和第三判断式为 TRUE 11/03 20:16
14F:→ gsuper: all(!outcome%in%c('heart failure','heart attack', 11/03 20:18
15F:→ gsuper: 'pnuemonia')) 11/03 20:18
16F:→ gsuper: 写不对了 all 去掉 11/03 20:19
17F:→ oldjojotenya: 回来温习才发现g大实用的回答,琢磨中^^谢谢! 11/18 16:52