考虑这三个数据帧:
cor.test
我想在a
列与a
列之间b
,b
与c
之间c
与for (i in 1:length(df1)){
cor.test(df1[,i],df2[,i])
}
对{foo, bar} = groupBy(arg);
在所有dfs中 - 我可以在每对之间使用和修改下面的代码,但我希望一次性在所有三个数据帧之间循环:
Foo
我将如何做到这一点?
答案 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)]})))