我在r中有一个名为tbl的数据表。 我想执行wilcox测试,将每列与表中的每一列进行比较,并将p值存储在新的表或矩阵中。
要比较一对列(在这种情况下为1和2),我通常会这样做:
wilcox.test(tbl[,1],tbl[,2],alternative="t",paired=FALSE)
非常感谢任何帮助。
答案 0 :(得分:4)
一种方法是存储tbl
的双向组合,然后使用lapply
来计算p.values。像这样:
#example data.frame
df <- data.frame(a = runif(10), b= runif(10), c=runif(10))
#calculate combinations of names
combinations <- as.data.frame(combn(names(df), 2), stringsAsFactors=FALSE)
#use the above combinations and calculate the wilcox.test to get the p.values
lapply(combinations, function(x) {
wilcox.test(df[,x[1]] , df[, x[2]], alternative="t", paired=FALSE)$p.value
})
输出:
$V1
[1] 0.8534283
$V2
[1] 0.2175626
$V3
[1] 0.3526814