在两个以上的数据帧上对相同变量进行循环相关测试

时间:2016-11-26 15:35:45

标签: r correlation

考虑这三个数据帧:

cor.test

我想在a列与a列之间bbc之间cfor (i in 1:length(df1)){ cor.test(df1[,i],df2[,i]) } {foo, bar} = groupBy(arg); 在所有dfs中 - 我可以在每对之间使用和修改下面的代码,但我希望一次性在所有三个数据帧之间循环:

Foo

我将如何做到这一点?

1 个答案:

答案 0 :(得分:1)

我们可以将对象名称与combn组合,在mget中获取list的值,并在每个cor.test上应用list,提取p.value

combn(paste0("df", 1:3), 2, FUN = function(x) {
      x1 <- mget(x, envir = .GlobalEnv)
     Map(function(x,y) cor.test(x,y)$p.value, x1[[1]], x1[[2]])})

或其他选项corr.test来自psych

library(psych)
t(sapply(names(df1), function(nm) {
     x1 <- corr.test(data.frame(df1[nm], df2[nm], df3[nm]))$p
      x1[lower.tri(x1)]})))