r中p值的2个数据帧的cor.test相关性

时间:2016-12-16 17:48:28

标签: r correlation

我有2个数据框,它们彼此不同,我需要对使用cor.test()中的R函数的数据进行关联。

我的数据框具有相同的列数,但行彼此不同。

例如,融化后(使用melt()包中的reshape函数),我的数据框如下所示:

每个数据框都有84列和不同的行数:

head(df1)


ID  variable    value
ENSG60  AE02_ID 7.408430
ENSG53  AE02_ID 0.000000
ENSG94  AE02_ID 2.556464
ENSG49  AE02_ID 0.032384
ENSG9   AE02_ID 0.000000

head(df2)

ID  variable value
ENSG3   AE02_ID 0.000001
ENSG1   AE02_ID 0.329180
ENSG8   AE02_ID 0.000000
ENSG10  AE02_ID 29.157761
ENSG20  AE02_ID 0.633884

我使用以下R脚本进行分析,返回Spearman系数:

result <- apply(mat1, 2, function(col_mat1){
  apply(mat2, 2, function(col2, col1) {
    cor.test(col2, col1, method = "spearman")$estimate # this returns the p-value of the cor.test
  }, col1=col_mat1)
})

当我尝试将p.value添加到上述函数时:

result <- apply(mat1, 2, function(col_mat1){
  apply(mat2, 2, function(col2, col1) {
    cor.test(col2, col1, method = "spearman")cbind($estimate,$p.value) # this returns the p-value of the cor.test
  }, col1=col_mat1)
})

它正在返回错误消息。

任何建议或帮助都会很棒。谢谢。期望的是这样的,

    df1     df2     Coefficient     P.value
    ENSG60  ENSG3   0.1828591281    0.00546547
    ENSG53  ENSG1   0.021038182 0.021038182
    ENSG94  ENSG8   -0.0683044433   0.000657

1 个答案:

答案 0 :(得分:1)

您还没有给出可重复的示例,但我认为您的内部功能需要稍微修改(例如)如下:

function(col2, col1) {
    cc <- cor.test(col2, col1, method = "spearman")
    cbind(cc$estimate,cc$p.value)
}