Re: [問題] 用R數據條件判斷分類

看板R_Language作者 (missing)時間8年前 (2017/03/16 21:13), 8年前編輯推噓2(207)
留言9則, 3人參與, 最新討論串2/3 (看更多)
我的想法是用簡單的條件式去判斷就好,不用寫迴圈。 下面只是把你的目的寫成條件式,再加一個保險,避免丟進去的物件不是兩個元素: #### multiple_judges <- function(x) { if (length(x) != 2) {stop("The input should have 2 elements.")} # 如果丟進去的東西不是兩個值,程式會警告並停止執行 else { if (x[1] >= 1 & x[1] <= 3 & x[2] == "M1") {return("K1")} # 甲介於1~3間,且乙= M1得到K1 else if (x[1] >= 4 & x[1] <= 6 & x[2] == "M2") {return("K2")} # 甲介於4~6間,且乙= M2得到K2 else if (x[1] >= 7 & x[1] <= 9 & x[2] == "M3") {return("K3")} # 甲介於7~9間,且乙= M3得到K3 else {return(NULL)} } } multiple_judges(X1) multiple_judges(X2) multiple_judges(X3) #### 應該可以得到你想要的結果~ ※ 引述《hizerg (路過的人)》之銘言: : [問題類型]: : : 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來) : : [軟體熟悉度]: : : 入門(寫過其他程式,只是對語法不熟悉) : : [問題敘述]: : 請簡略描述你所要做的事情,或是這個程式的目的 : 多組數值(甲、乙) : 甲介於1~3間,且乙= M1得到K1 : 甲介於4~6間,且乙= M2得到K2 : 甲介於7~9間,且乙= M3得到K3 : 1.產生資料 : A <- c(1, 3, "M1", "K1") : B <- c(4, 6, "M2", "K2") : C <- c(7, 9, "M3", "K3") : X1 <- c(5, "M1") : X2 <- c(4, "M2") : X3 <- c(8, "M3") : 當X1資料丟進去判斷,得到K1 : 當X2資料丟進去判斷,得到null : 當X3資料丟進去判斷,得到K3 : 這個用迴圈寫會比較好?(完全沒頭緒) : 謝謝各位前輩 : : [環境敘述]: : : R version 3.3.3 (2017-03-06) : Windows 7 x64 Service Pack 1 : : [關鍵字]: : : R語言多重數據判斷分類 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.225.139.194 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1489669988.A.D66.html ※ 編輯: clsmbstu (36.225.139.194), 03/16/2017 21:16:27

03/16 22:05, , 1F
感謝! 不過我的問題主要是 條件大概有將近50組
03/16 22:05, 1F

03/16 22:05, , 2F
需要寫變數 所以才思考是不是要用迴圈
03/16 22:05, 2F

03/16 22:06, , 3F
A B C 只是把其中的三組 簡單化寫出
03/16 22:06, 3F

03/16 22:08, , 4F
這個寫法我也想一下 真的很謝謝願意給一個思考方向
03/16 22:08, 4F

03/16 22:38, , 5F
我的想法跟板主後來的回應有點類似,如果你50個條件都是
03/16 22:38, 5F

03/16 22:39, , 6F
像這樣的格式,那把它們變成data frame的確方便很多,
03/16 22:39, 6F

03/16 22:39, , 7F
但這樣寫是有點糟的方式QQ,完全沒有vectorization
03/16 22:39, 7F

03/16 22:39, , 8F
筆數不用太多就會跑到哭出來
03/16 22:39, 8F

03/16 23:14, , 9F
我當時只是想簡單問題就簡單解決...
03/16 23:14, 9F
文章代碼(AID): #1Ooezarc (R_Language)
文章代碼(AID): #1Ooezarc (R_Language)