[问题] []里面放逻辑矩阵也可以吗?

楼主: s3714443 (metalheads)   2017-10-09 13:35:35
小弟最近想把资料(data frame)里面的na值用0取代
查一查发现
data[is.na(data)]<-0就可以解决
但是有点想不透为什么这样子就可以指定到那些na的值
is.na(data)出来是一个矩阵
所以[]放矩阵也可以吗? 规则是如何呢?
感谢各位大神
作者: sw52099 (sw52099)   2017-10-09 17:07:00
[]里面放矩阵?什么意思有点不懂
作者: clsmbstu   2017-10-09 18:28:00
R语言里data frame跟matrix是不一样的喔 感觉你有点混淆[]里面可以放逻辑值 data[is.na(data)]就挑出data里是NA的那些(就是一群NA值) 再加上<-0就把这些NA都换成0了还是很难理解的话试试 x <- 1:10; x[x > 5] <- -50
作者: x88776544pc (龙飞五丈原)   2017-10-09 18:44:00
[] 里如果放逻辑矩阵的话,它就依矩阵逐行逐个判断,只是is.na 出来的东西跟原 data 一样size,因此对应到原本资料中 NA 的位置
作者: clsmbstu   2017-10-09 21:34:00
请无视我在二楼的那句 我自己眼残 orz
作者: andrew43 (讨厌有好心推文后删文者)   2017-10-11 16:34:00
内部的规则是:以一维向量的索引来对应。虽然data frame和matrix看起来都是二维的,但在内部还是可以视为各cell以先栏后列的一维方向排列而成。不过你也可以不用在意到这么细,就先把资料框和矩阵的索引规则是共享的,理解成这样就不会出错了。更正:先列后栏,不是先栏后列再更正,先栏后列没错。今天开退烧脑残很严重。

Links booklink

Contact Us: admin [ a t ] ucptt.com