library(knitr); 
library(ascii);

yml<-yaml::yaml.load_file("./SummarizeObject.yml");
fn<-yml$file;
nm<-sapply(strsplit(fn, '/'), function(x) rev(x)[1]); 
nm<-substr(nm, 1, sapply(gregexpr('\\.', nm), function(x) x[length(x)])-1); 
names(fn)<-nm; 
**_[Go back to project home](`r yml$home`)_**

This is an R Markdown document that summarizes a set of table-like R objects. It reports the types (data.frame, matrix, GRanges, etc.), field names, field classes, and summary of field values for each object.

summaryObj<-function(fn) {
  print(fn); 
  obj<-readRDS(fn); 
  cll<-class(obj); 
  if (cll=='GRanges') obj<-as.data.frame(elementMetadata(obj)); 
  if (cll=='matrix' | cll=='data.frame') {
    n1<-nrow(obj);
    n2<-ncol(obj);
    nm<-colnames(obj); 
    fld<-lapply(1:ncol(obj), function(i) obj[, i]); 
    cnt<-sapply(fld, function(x) length(x[!is.na(x) & x!=''])); 
    fld<-lapply(fld, function(x) sort(unique(as.vector(x))));
    fld<-lapply(fld, function(x) x[!is.na(x) & x!='']);
    names(fld)<-nm; 
    cls<-sapply(fld, class); 
    val<-t(sapply(fld, function(x) x[c(1, ceiling(length(x)/2), length(x))])); 
    colnames(val)<-c('First', 'Middle', 'Last'); 
    tbl<-data.frame(Class=cls, Count=cnt, Level=sapply(fld, length),  val, stringsAsFactors = FALSE); 
    rownames(tbl)<-gsub('\\.', '_', rownames(tbl)); 
    colnames(tbl)<-gsub('\\.', '_', colnames(tbl)); 
    rownames(tbl)<-gsub('[_]+', '_', rownames(tbl)); 
    colnames(tbl)<-gsub('[_]+', '_', colnames(tbl)); 
  } else {
    n1<-0;
    n2<-0;
    fld<-list();
    tbl<-data.frame();
  }

  list(class=cll, num.entry=n1, num.field=n2, field=fld, table=tbl); 
}

smm<-lapply(fn, summaryObj); 
names(smm)<-names(fn); 
**_[Go back to project home](`r yml$home`)_**

All files

Summary of all files in a single table (each row represents a file):

tbl<-t(sapply(smm, function(x) x[1:3])); 
dimnames(tbl)<-list(names(smm), c('Data_type', 'Num_Entry', 'Num_Field')); 
info<-file.info(fn); 
tbl<-data.frame(File_size=format(info[, 'size'], big.mark = ','), tbl, Modify_time=as.character(info[, 'mtime'])); 
kable(tbl);
**_[Go back to project home](`r yml$home`)_**

Individual files

Summary of individual files in separate tables (each row represents a field):

lns<-lapply(names(smm), function(nm) {
  hd<-paste('## File name: **_', nm, '_**', sep=''); 
  ln<-as.list(kable(smm[[nm]]$table));
  c(hd, '\n', ln, '\n\n', "<div align='right'>**_[Go back to project home](", yml$home, ")_**</div>
", '***\n'); 
}); 
lns<-do.call('c', lns); 
lns<-paste(lns, collapse='\n'); 

r lns


END OF DOCUMENT



zhezhangsh/awsomics documentation built on May 4, 2019, 11:20 p.m.