作者tony1331 (BLUE)
看板R_Language
標題[問題] 把資料某欄 大於1 小於0的 令為NA
時間Mon Nov 6 15:50:07 2017
問題:
把資料某欄 大於1 小於0的 令為NA
http://i.imgur.com/c3zBtv3.jpg
http://i.imgur.com/URDExKW.jpg
請問大家這跑出來是什麼問題?
謝謝~
-----
Sent from JPTT on my Asus ASUS_Z012DA.
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.76.57.214
※ 文章網址: https://webptt.com/m.aspx?n=bbs/R_Language/M.1509954610.A.457.html
1F:→ andrew43: which那串用意是? 11/06 15:56
2F:→ andrew43: 另外which是問它哪「些」符合,而你只拿一個東西問它 11/06 15:56
3F:→ andrew43: 好像沒什麼意義吧 11/06 15:57
4F:→ tony1331: 沒打which那個 也跑不出來 11/06 16:41
5F:→ tony1331: 因為禮拜有NA他好像不能判斷 11/06 16:43
6F:→ jyung: 你的 error mesagge 是which那段造成的,沒有新的 error me 11/06 17:14
7F:→ jyung: ssage 看不出為什麼跑不出 11/06 17:14
8F:推 ixjnkeewnoxx: 應該是if中判斷式要是logical值,而which()回傳的 11/06 17:18
9F:→ ixjnkeewnoxx: 值不是TRUE or FALSE 所以程式拋Error給你 11/06 17:18
10F:推 clsmbstu: 樓上說的有可能 11/06 17:33
11F:→ clsmbstu: which那邊留is.na(A3[x,55])應該就可以了 ==TRUE不需要 11/06 17:39
12F:→ clsmbstu: which也一樣不需要 11/06 17:39
13F:→ clsmbstu: 另外你也可以不用寫for loop,R可以對一串值同時做邏輯 11/06 17:43
14F:→ clsmbstu: 運算 11/06 17:43
15F:→ clsmbstu: ToBeNA <- A3[,55] < 0 | A3[,55] > 1 | is.na(A3[,55]) 11/06 17:47
16F:→ clsmbstu: A3[,55][ToBeNA] <- NA 11/06 17:47
17F:→ andrew43: which那串應該是回傳了空向量才出現這個error。 11/06 18:49
18F:→ andrew43: 我只是要小小補充 c(1,2,3,3.14) == T 的表示式是合法的 11/06 18:53
19F:→ clansoda: 我是想問 ifelse難道不是更好的選擇嗎? 11/06 19:24
20F:→ andrew43: 向量化自然是更好的方法。 11/06 19:36
21F:推 clsmbstu: 剛剛試了一下andrew大的說法,可以重現錯誤,感謝! 11/06 20:21
22F:→ clsmbstu: 也謝謝clansoda的ifelse 11/06 20:23
23F:→ clansoda: if寫太長會有點想吐XDD 11/06 20:36
24F:→ tony1331: 感謝大家解答 我再試試 11/07 11:32