Hi, rownames(y_raw_mt)=y_raw[,1] ## y_raw not defined.
set.seed(25) mat1<- matrix(sample(c(NA,1:20),100,replace=TRUE),20,5) #changed the function to process 'mat1'. Also, it is better to read the file separately and check ?str(dt.table) before proceeding. write.table1=function(durty_data){ # dt.table=read.table(durty_data, sep = "\t", header=T)# # y_raw_mt=as.matrix(dt.table[2:174])#### y_raw_mt<- durty_data rownames(y_raw_mt)= paste0("Col",1:nrow(y_raw_mt)) #assigning the raw names to the matrix y_raw_mt_t=t(y_raw_mt)#### y_raw_mt_t_mean=apply(y_raw_mt_t, 2, mean, na.rm=T)### means=c(y_raw_mt_t_mean)## y_raw_mt_t_meanbind=rbind(y_raw_mt_t,means)## t=function(x) { x[is.na(x)] = mean(x, na.rm = T) return(x) } write.a.nice.table=apply(y_raw_mt_t_meanbind,2,t) return(write.a.nice.table) } #Function seemed to work as intended. write.table1(mat1) Col1 Col2 Col3 Col4 Col5 Col6 Col7 Col8 Col9 Col10 Col11 Col12 Col13 8 14.0 3.0 18.0 2.0 20 13.0 7.0 1.0 5 6.0 7 20.0 9 9.0 1.0 3.0 6.0 6 1.0 12.0 11.0 4 17.0 7 4.0 14 5.0 11.0 15.0 11.0 6 20.0 14.0 1.0 15 2.0 15 17.0 2 4.0 6.0 14.0 13.0 17 9.0 18.0 13.0 5 18.0 2 1.0 12 7.0 10.0 1.0 16.0 16 6.0 8.0 16.0 11 10.0 4 12.0 means 9 7.8 6.2 10.2 9.6 13 9.8 11.8 8.4 8 10.6 7 10.8 Col14 Col15 Col16 Col17 Col18 Col19 Col20 12.0 14.0 3 11.0 15.0 10.0 15 2.0 17.0 8 19.0 7.0 3.0 2 10.0 11.0 2 2.0 11.0 3.0 2 16.0 4.0 9 2.0 17.0 3.0 3 13.0 11.5 8 13.0 18.0 4.0 3 means 10.6 11.5 6 9.4 13.6 4.6 5 rowMeans(mat1,na.rm=TRUE) # [1] 9.0 7.8 6.2 10.2 9.6 13.0 9.8 11.8 8.4 8.0 10.6 7.0 10.8 10.6 11.5 #[16] 6.0 9.4 13.6 4.6 5.0 A.K. hi, I am new to are, very new and want to ask what's wrong with this function: It is suppose to read a table and return its matrix transposed with NA replaced by the average of each column and a row of means at the bottom row. The separated parts are returned correctly. Thanks a lot for any help. Guy write.table=function(durty_data){ dt.table=read.table(durty_data, sep = "\t", header=T)# y_raw_mt=as.matrix(dt.table[2:174])#### rownames(y_raw_mt)=y_raw[,1] #assigning the raw names to the matrix y_raw_mt_t=t(y_raw_mt)#### y_raw_mt_t_mean=apply(y_raw_mt_t, 2, mean, na.rm=T)### means=c(y_raw_mt_t_mean)## y_raw_mt_t_meanbind=rbind(y_raw_mt_t,means)## t=function(x) { x[is.na(x)] = mean(x, na.rm = T) return(x) } write.a.nice.table=apply(y_raw_mt_t_meanbind,2,t) return(write.a.nice.table) } ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.