如何使用跨 r 列的 t 检验循环中的 p 值创建数据框?

How to create dataframe with p-values from a t-test loop across columns in r?

我有两个值矩阵,代表两个队列,横跨 166 列,代表天数(例如 Day1)。

condition_1
        Day1 Day2 Day3 ... Day166
person1 27   38   94       40
person2 69   16   85       47
person3 99   30   90       50
person4 69   88   35       4

condition_2
        Day1 Day2 Day3 ... Day166
person1 55   34   17       33
person2 39   77   21       86
person3 98   30   13       71
person4 61   15   29       98

我想循环成对的 t.test(),它比较每个条件下相应日期的均值,并按天创建一个具有 p 值的新向量,如下所示:

     p-value
Day1 0.5
Day2 0.7
Day3 0.88
Day4 0.001

你可以试试这个:

data.frame(
  "p-value" = sapply(1:166, \(x) t.test(condition_1[,x],condition_2[,x], paired=T)$p.value),
  row.names = paste0("Day",1:166)
)  

(注意:如果您使用 R<4.1,请使用 function(x) 而不是 \(x)

输出:(前六行)

          p.value
Day1   0.60042478
Day2   0.05388822
Day3   0.81511287
Day4   0.16105380
Day5   0.89930687
Day6   0.89607922