[問題] []裡面放邏輯矩陣也可以嗎?

作者: 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