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