我有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
答案 0 :(得分:1)
您还没有给出可重复的示例,但我认为您的内部功能需要稍微修改(例如)如下:
function(col2, col1) {
cc <- cor.test(col2, col1, method = "spearman")
cbind(cc$estimate,cc$p.value)
}