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