如何使用apply family函数将t.test(两个样本)放到数据帧的行中?

时间:2014-08-26 01:27:14

标签: r

如何使用apply family函数对数据帧的行(包含两个级别,或者换句话说,一组样本)执行t.test?我已经使用函数和循环完成了。我的总体目的是从两组miRNA微阵列样品中计算DE基因。而且我知道limma可以做到这一点,但似乎limma不支持配对t检验。

t.test.df=function(df,paired){
  df.t=c()
  for(i in 1:nrow(df)){
    df.t=rbind(df.t,unlist(t.test(df[i,grp1],df[i,grp2],paired=paired)))
  }
  rownames(df.t)=rownames(df)
  df.t
}

贝斯茨! Allen Chiu

1 个答案:

答案 0 :(得分:5)

由于您未在此处提供数据示例,因此data.frame中的一些示例数据称为计数。在这个例子中有3个案例和3个控件

Gene   S1      S2      S3      S4      S5      S6
1   20000   12032   23948    2794    5870     782
3   15051   17543   18590   21005   22996   26448
4   35023   43092   41858   39637   40933   38865

t.result <- apply(counts[,2:7], 1, function (x) t.test(x[1:3],x[4:6],paired=TRUE))

counts$p_value <- unlist(lapply(t.result, function(x) x$p.value))

您还需要进行某种多重测试校正。

counts$fdr <- p.adjust(counts$p_value, method = "fdr")

使用?p.adjust查看其他方法