Performing t.test to obtain p.values for each gene

I have FPKM values for Normal(80 cases), Group1(135 cases), Group2(147 cases), and Group3(102 cases) for 160 genes (Groups were obtained by clustering tumor data).

I want to perform t-test (two-sided, unpaired, unequal variance) between Normal and Group1, Normal and Group2, and Normal and Group3 such that I get p.value for each gene.
The t.test function in R returns single p.value and not gene-wise (I don't want to do t-test in Excel).

Which package/function should I use to do this in R?

apply(m, 1, function(x) t.test(x[1:5], x[6:10])$p.value) Neither t.test() nor lmFit() should be expected to produce the same results as excel, since excel is inferior in every way and should never be relied upon for any statistical analysis (plus lmFit is doing something much much more complicated than a simple t-test). As an aside, FPKMs are highly problematic for use in statistics. If possible, I strongly encourage you to get either per-gene counts or per-gene estimated counts and to use those in limma or another differential expression package instead, as the results will be much more reliable. I presume, though, that you're using TCGA data, so you may be stuck with FPKMs. • I totally agree with Devon's aside comment. FPKM values are not suitable for (sound) statistics and only informative for heatmaps etc. For proper statistics you should use count data, all statisticians agree on that. – benn Apr 15 '18 at 9:20 • @b.nota Source? Apr 15 '18 at 13:02 • @SmallChess, for example paper about edgeR, but also the more difficult stuff of Gordon Smyth and read the discussions on bioconductor support. – benn Apr 15 '18 at 13:48 • I tried t.test()Group1.ttest <- t.test(data.Normal, data.Group1, "two.sided", paired = FALSE, var.equal = FALSE)but the function does not give me p.values row-wise. The result that I obtained for above code> Group1.ttest$p.value  5.632393e-48I tried lmFit() fac <- factor(c(rep(0,80),rep(1,135))) fit = lmFit(Normal.Group1, design=model.matrix(~ fac)) e = eBayes(fit) tab<-topTable(e, number=nrow(Normal.Group1)) but the p-values obtained are different from the ones obtained when I do the t.test on the same data in Excel. I tried log2(Normal.Group1) but still the results differ. Apr 15 '18 at 13:55