# TODO: Add comment
# 
# Author: E.Korsching 10.9.2009
###############################################################################



F.test.fast <- function(rownames.x,ncx,ncy,xcols.var,ycols.var,alpha=0.05,alternative="two.sided"){
    # F-test for data.frame, fast
    # two group variances will be given and test will do on each row of the data.frame
    # Returns p value and logical vector with T if variance is equal

	num.df <- ncx - 1
	denom.df <- ncy - 1
	F.stat <- xcols.var/ycols.var
#	parameters = c(num.df, denom.df)

	switch(alternative,
	    two.sided = {
			F.p.value <- ifelse(F.stat > qf(0.5, num.df, denom.df),2*(1-pf(F.stat, num.df, denom.df)) , 2 * pf(F.stat, num.df, denom.df))
#			F.conf.int <- c(F.stat/qf(1 - alpha/2, num.df, denom.df),F.stat/qf(alpha/2, num.df, denom.df))
		},
		greater = {
			F.p.value <- 1 - pf(F.stat, num.df, denom.df)
#			F.conf.int <- c(F.stat/qf(1 - alpha, num.df, denom.df),NA)
		},
		less = {
			F.p.value <- pf(F.stat, num.df, denom.df)
#			F.conf.int <- c(0, F.stat/qf(alpha, num.df, denom.df))
		}
	)
			
	var.equal <- F.p.value > alpha

	erg <- data.frame(F.p.value,var.equal,row.names=rownames.x, dup.row.names=T)
	names(erg) <- c("F.p","var.equal")
	return(erg)
}



