作者s3714443 (metalheads)
看板R_Language
标题[问题] []里面放逻辑矩阵也可以吗?
时间Mon Oct 9 13:35:35 2017
小弟最近想把资料(data frame)里面的na值用0取代
查一查发现
data[is.na(data)]<-0就可以解决
但是有点想不透为什麽这样子就可以指定到那些na的值
is.na(data)出来是一个矩阵
所以[]放矩阵也可以吗? 规则是如何呢?
感谢各位大神
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 180.218.92.245
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1507527339.A.9F8.html
1F:推 sw52099: []里面放矩阵?什麽意思有点不懂 10/09 17:07
2F:推 clsmbstu: R语言里data frame跟matrix是不一样的喔 感觉你有点混淆 10/09 18:28
3F:→ clsmbstu: []里面可以放逻辑值 data[is.na(data)]就挑出data里是NA 10/09 18:31
4F:→ clsmbstu: 的那些(就是一群NA值) 再加上<-0就把这些NA都换成0了 10/09 18:32
5F:→ clsmbstu: 还是很难理解的话试试 x <- 1:10; x[x > 5] <- -50 10/09 18:33
6F:推 x88776544pc: [] 里如果放逻辑矩阵的话,它就依矩阵逐行逐个判断, 10/09 18:44
7F:→ x88776544pc: 只是is.na 出来的东西跟原 data 一样size,因此对应 10/09 18:44
8F:→ x88776544pc: 到原本资料中 NA 的位置 10/09 18:44
9F:→ clsmbstu: 请无视我在二楼的那句 我自己眼残 orz 10/09 21:34
10F:→ andrew43: 内部的规则是:以一维向量的索引来对应。 10/11 16:34
11F:→ andrew43: 虽然data frame和matrix看起来都是二维的,但在内部还是 10/11 16:35
12F:→ andrew43: 可以视为各cell以先栏後列的一维方向排列而成。 10/11 16:35
13F:→ andrew43: 不过你也可以不用在意到这麽细,就先把资料框和矩阵的索 10/11 16:49
14F:→ andrew43: 引规则是共享的,理解成这样就不会出错了。 10/11 16:50
15F:→ andrew43: 更正:先列後栏,不是先栏後列 10/11 16:53
16F:→ andrew43: 再更正,先栏後列没错。今天开退烧脑残很严重。 10/11 16:54