作者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/m.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