去卷积函数导致R

时间:2014-01-29 18:59:45

标签: r

我有一个由两组组成的数据集,我想看看Age与我的两个组g1和g2的所有自变量的相关性。最后,我想绘制结果以比较我收到的两组相关值。

到目前为止,我已经这样做了:

corg1 = data.frame('rho'=rep(NA,length(vars)),'p.value'=rep(NA,length(vars)))
#vars = list of variables I'm interested in

corg1$rho = apply(data[g1,vars],2,function (x) { cor.test(x,data$Age[g1],method='spearman')$estimate })
corg1$p.value = apply(data[g1,vars],2,function (x) {cor.test(x,data$Age[g1],method='spearman')$p.value})

然后我用接收结果的不同数据帧重复g2的过程。

corg2 = data.frame('rho'=rep(NA,length(vars)),'p.value'=rep(NA,length(vars)))
#vars = list of variables I'm interested in

corg2$rho = apply(data[g2,vars],2,function (x) { cor.test(x,data$Age[g2],method='spearman')$estimate })
corg2$p.value = apply(data[g2,vars],2,function (x) {cor.test(x,data$Age[g2],method='spearman')$p.value})

这给了我2个数据帧,我假设它们的排序方式相似,这似乎足够安全,但似乎没必要运行两次cor.test并剥离我想要的那块。我也可以只使用一个数据帧来捕获所有结果 - g1的两列和g2的两列。不过,我确信我错过了什么。

我很感激任何建议让这更像R。

1 个答案:

答案 0 :(得分:2)

类似的东西:

results <- apply(data,2,function (x) { 
    ctg1 <- cor.test(x[g1,vars],data$Age[g1],method='spearman')
    ctg2 <- cor.test(x[g2,vars],data$Age[g2],method='spearman')
    c(rho1 = ctg1$estimate, rho2 = ctg2$estimate, p.value1 = ctg1$p.value, p.value2 = ctg2$p.value)
  }
)

你可以为每个变量组合做一次cor.test()并提取你需要的部分。 apply()会将内容粘贴到矩阵中。 (您可能还需要传递g1g2vars