[問題] 把資料某欄 大於1 小於0的 令為NA

作者: tony1331 (BLUE)   2017-11-06 15:50:07
問題:
把資料某欄 大於1 小於0的 令為NA
http://i.imgur.com/c3zBtv3.jpg
http://i.imgur.com/URDExKW.jpg
請問大家這跑出來是什麼問題?
謝謝~
作者: andrew43 (討厭有好心推文後刪文者)   2017-11-06 15:56:00
which那串用意是?另外which是問它哪「些」符合,而你只拿一個東西問它好像沒什麼意義吧
作者: tony1331 (BLUE)   2017-11-06 16:41:00
沒打which那個 也跑不出來因為禮拜有NA他好像不能判斷
作者: jyung (malayung)   2017-11-06 17:14:00
你的 error mesagge 是which那段造成的,沒有新的 error message 看不出為什麼跑不出
作者: ixjnkeewnoxx (Zapdos)   2017-11-06 17:18:00
應該是if中判斷式要是logical值,而which()回傳的值不是TRUE or FALSE 所以程式拋Error給你
作者: clsmbstu   2017-11-06 17:33:00
樓上說的有可能which那邊留is.na(A3[x,55])應該就可以了 ==TRUE不需要which也一樣不需要另外你也可以不用寫for loop,R可以對一串值同時做邏輯運算ToBeNA <- A3[,55] < 0 | A3[,55] > 1 | is.na(A3[,55])A3[,55][ToBeNA] <- NA
作者: andrew43 (討厭有好心推文後刪文者)   2017-11-06 18:49:00
which那串應該是回傳了空向量才出現這個error。我只是要小小補充 c(1,2,3,3.14) == T 的表示式是合法的
作者: clansoda (小笨)   2017-11-06 19:24:00
我是想問 ifelse難道不是更好的選擇嗎?
作者: andrew43 (討厭有好心推文後刪文者)   2017-11-06 19:36:00
向量化自然是更好的方法。
作者: clsmbstu   2017-11-06 20:21:00
剛剛試了一下andrew大的說法,可以重現錯誤,感謝!也謝謝clansoda的ifelse
作者: clansoda (小笨)   2017-11-06 20:36:00
if寫太長會有點想吐XDD
作者: tony1331 (BLUE)   2017-11-07 11:32:00
感謝大家解答 我再試試
作者: celestialgod (天)   2017-11-13 23:02:00

Links booklink

Contact Us: admin [ a t ] ucptt.com