Try to fix the 'Factor hsa new levels' error
training data and testing data might have different levels?
Change course of glm() "mf$drop.unused.levels <- TRUE" into "mf$drop.unused.levels <- FALSE"
Use function glm.my(). Ran through with some warnings.
"In predict.lm(object, newdata, se.fit, scale = 1, type = ifelse(type ==  :
  prediction from a rank-deficient fit may be misleading"