chr <- read.table("../lrn/cty_chr.txt",
         header=F,colClasses="character",col.names=c("file","feature","type")) 
num <- read.table("../lrn/cty_num.txt",
         header=F,colClasses="character",col.names=c("file","feature","type")) 

target <- read.table("../lrn/num/472.dat",header=T,colClasses="numeric")

nchr <- length(chr$file)
nnum <- length(num$file)

for (i in 1:nchr) {
  filename <- paste("../lrn/chr/",chr$file[i],".dat",sep="")

  print("---------------------------------------------------------------------")
  print(c(chr$feature[i],filename))

  tmp <- read.table(filename,header=T,colClasses="character",blank.lines.skip=F)

  y <- target[,1]
  x <- tmp[,1]

  y <- y[x!=""]
  x <- x[x!=""]

  x <- as.factor(x)

  nl <- nlevels(x)
  print(paste("nlevels = ",nl))

  if (nl == 1) {
    print("too few levels")
  }
  else if (nl < 25) {
    dat <- data.frame(y=y,x=x)
    rm(tmp,x,y)
    fit <- lm(y~x,dat)
    print(anova(fit))
  }
  else if (nl < 100) {
    set.seed(100543)
    idx <- sample(1:length(x),15000)
    dat <- data.frame(y=y[idx],x=x[idx])
    rm(tmp,x,y,idx)
    fit <- lm(y~x,dat)
    print(anova(fit))
  } 
  else {
    print("too many levels")
  }

  print("---------------------------------------------------------------------")
  print(c(chr$feature[i],filename))

  tmp <- read.table(filename,header=T,colClasses="character",blank.lines.skip=F)

  y <- target[,1]
  x <- tmp[,1]

  x <- as.factor(x)

  nl <- nlevels(x)
  print(paste("nlevels = ",nl))

  if (nl == 1) {
    print("too few levels")
  }
  else if (nl < 25) {
    dat <- data.frame(y=y,x=x)
    rm(tmp,x,y)
    fit <- lm(y~x,dat)
    print(anova(fit))
  }
  else if (nl < 100) {
    set.seed(100543)
    idx <- sample(1:length(x),15000)
    dat <- data.frame(y=y[idx],x=x[idx])
    rm(tmp,x,y,idx)
    fit <- lm(y~x,dat)
    print(anova(fit))
  } 
  else {
    print("too many levels")
  }
}

for (i in 1:nnum) {
  filename <- paste("../lrn/num/",num$file[i],".dat",sep="")
  print("---------------------------------------------------------------------")
  print(c(num$feature[i],filename))

  tmp <- read.table(filename,header=T,colClasses="numeric",blank.lines.skip=F)

  y <- target[,1]
  x <- tmp[,1]

  y <- y[x!=""]
  x <- x[x!=""]

  dat <- data.frame(y=y,x=x)
  rm(tmp,x,y)
  fit <- lm(y~x,dat)
  print(anova(fit))
}
