2012-07-19 99 views
1

在該R 2.14.2我有一個矩陣:填充列值?

mat1=matrix(c('A','','','B')) 

,我想填補空值,所以變成這樣:

mat2=matrix(c('A','','','B','A','A','A','B'),2,4,byrow=T) 

換句話說,我怎麼墊空值? [在Excel中,我會在列B中使用此公式:B2 = if(isblank(A2),B1,A2),並將其複製下來]。

我該如何在R中做到這一點?

亨克

+0

爲什麼不使用類似這樣的東西** mat1 [nchar(mat1)== 0] < - 'A'**(您可以用像Excel例子中B1列這樣的矢量替換'A') – dickoa 2012-07-19 10:30:08

回答

2

使用na.locf封裝zoo。該locflast observation carried forward,這是你在做什麼:

library(zoo) 

x <- c('A',NA,NA,'B') 
na.locf(x) 

[1] "A" "A" "A" "B" 

但要確保你瞭解NA""(空字符串)之間的差異。在Excel中,使用空字符串以防止顯示公式可能會很有用,但在R中,使用NA來指示缺失值會更好。

+0

[已解決] 非常感謝! 我有兩個n/a和空格,現在意識到我可以使用:mat = csv.read('myfile.csv',na.strings = c('n/a','')換句話說,你可以設置更多的值作爲NA。 – Henk 2012-07-19 15:28:39