[問題] ||的用法

看板R_Language作者 (舊舅舅)時間10年前 (2014/10/25 21:19), 10年前編輯推噓1(1016)
留言17則, 5人參與, 最新討論串1/1
[問題類型]: 程式諮詢 [軟體熟悉度]: 新手,用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://www.ptt.cc/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

10/25 23:24, , 1F
outcome %in% c(heart failure, heart attack, ...)
10/25 23:24, 1F

10/25 23:26, , 2F
看你的 outcome 只有一個值. 若是有很多個就反過來寫..
10/25 23:26, 2F

10/25 23:51, , 3F
if內第一個表達式為真
10/25 23:51, 3F

10/26 19:35, , 4F
謝謝E大我成功了!
10/26 19:35, 4F

10/26 19:37, , 5F
謝謝o大,已理解
10/26 19:37, 5F

10/26 19:49, , 6F
a <- 1 ; !(a == 2 | a == 3 | a == 4) 為所求
10/26 19:49, 6F

10/26 19:50, , 7F
我猜你要的寫法是這個。不過Edster的寫法更好懂。
10/26 19:50, 7F

10/27 00:43, , 8F
原來是把!放在外面,剛試過可以了,謝謝a大!
10/27 00:43, 8F

11/03 20:13, , 9F
盡量不要用 == 或 != , 因為對 NA 會有問題
11/03 20:13, 9F

11/03 20:14, , 10F
改用 %in% , all() , any() 這些比較好用
11/03 20:14, 10F

11/03 20:15, , 11F
還有就是你的 || 寫法沒問題, 是因為三者中任一項為 TRUE
11/03 20:15, 11F

11/03 20:16, , 12F
其結果就是 TRUE
11/03 20:16, 12F

11/03 20:16, , 13F
你的第一和第三判斷式為 TRUE
11/03 20:16, 13F

11/03 20:18, , 14F
all(!outcome%in%c('heart failure','heart attack',
11/03 20:18, 14F

11/03 20:18, , 15F
'pnuemonia'))
11/03 20:18, 15F

11/03 20:19, , 16F
寫不對了 all 去掉
11/03 20:19, 16F

11/18 16:52, , 17F
回來溫習才發現g大實用的回答,琢磨中^^謝謝!
11/18 16:52, 17F
文章代碼(AID): #1KIwDP7E (R_Language)
文章代碼(AID): #1KIwDP7E (R_Language)