R:对两个不同数据帧的所有匹配行执行 T 检验

R: Perform a T-Test across all matching rows of two different dataframes

因此,在 excel 中,有一个公式 ttest 可以对给定行执行 ttest(使用两个不同的数组,例如 =TTEST(A1:L1, M1:Z1,2, 2) - 在这种情况下,双尾,类型 2)。它 return 是该行的 pvalue。

我想知道在 R 中是否有类似的方法来执行此操作,其中我有两个长度相等的数据帧(df1 和 df2)代表两个数组,以及新向量 return s 每一行的t检验结果。

因此,T 检验会将 df1 中的所有 row1 值作为第一个数组,将 df2 中的所有 row1 值作为第二个数组,return 新 ttest 中该行的 pvalue矢量,并继续向下到最后一行。

感谢您的帮助。

注意:我不一定知道每个数据框中的列数,每次 运行 时它们都会有所不同。这就是为什么我想自动化它。

最简单的方法是使用 for 循环,如:

p <- numeric(0)
for(i in seq(nrow(df1)))
    pvalues[i] <- t.test(df1[i],df2[i])$p.value

你应该被警告,从 data.frame 中取出行通常会导致一些令人困惑的类型强制转换,所以我会先将 data.frame 转换为矩阵并测试矩阵是否为数字在

mx1 <- as.matrix(df1)
stopifnot(inherits(mx1,c('integer','numeric')))

并在 for 循环中使用 mx1 代替 df1。