Reemplazar los valores de NA por medio de fila

Quiero reemplazar mis valores de NA de una matriz adquirida por:

read.table(…) 

Esos valores deberían ser la media de la fila correspondiente.

Es decir, la siguiente fila de la tabla:

 1 2 1 NA 2 1 1 2 

se convertiría

 1 2 1 1.43 2 1 2 

Gracias.

Aquí hay algunos datos de muestra.

 m <- matrix(1:16, nrow=4) m[c(1,4,6,11,16)] <- NA 

Y así es como podría completar mis errores con los medios de la fila.

 k <- which(is.na(m), arr.ind=TRUE) m[k] <- rowMeans(m, na.rm=TRUE)[k[,1]] 

Sus datos estarán en un data.frame ; primero deberá convertir a una matriz usando as.matrix . Puede o no querer dejarlo en ese formato; para convertir el uso posterior as.data.frame .

 x[is.na(x)] <- mean(x, na.rm=TRUE) # for vectors or for a matrix as a whole t( apply(x, 1, function(xv) { xv[is.na(xv)] <- mean(xv, na.rm=TRUE) return(xv)} ) ) # for a row-oriented sol'n 
 a = c(NA, 1, 2, 3, 10) a[which(is.na(a)==TRUE)] = mean(a,na.rm = T)