如何在所有可能的组合上应用函数

时间:2017-10-28 14:45:26

标签: r

我的数据看起来像这样

df <- data.frame(matrix(rnorm(20), nrow=10, ncol=10))

我想计算并提取所有列之间所有可能的p值 如果我想在其中两个之间做这个,我就这样做

wilcox.test(df$X1,df$X2, paired=TRUE)

它给了我

Wilcoxon signed rank test

data:  df$X1 and df$X2
V = 21, p-value = 0.5566
alternative hypothesis: true location shift is not equal to 0

我希望列中所有可能对之间的V和p值

e.g。 Column1 with Column 2

Column1 with Column 3

column1 with column 4 etc etc

我想要的输出

X1-X2 : V p-value
X1-X2 : V p-value
.
.
.

1 个答案:

答案 0 :(得分:2)

我们可以在&#39; df&#39;的combn上使用names指定要选择的元素数量,即m为2,对数据集的列进行子集,应用wilcox.test,使用列名称提取p.valuepaste以获取预期格式

combn(names(df), 2, FUN = function(x) paste(paste(x, collapse='-'), 
       wilcox.test(df[,x[1]], df[,x[2]], paired = TRUE)$p.value, sep=" : "))

数据

set.seed(24)
df <- data.frame(matrix(rnorm(10*10), nrow=10, ncol=10))