求R中连续向量和二进制向量之间的相关性

4si2a6ki  于 2023-07-31  发布在  其他
关注(0)|答案(2)|浏览(73)

我有两个矩阵。第一个包含6个单元格中每个单元格的连续变量。

mat1.data <- c(-0.12, -0.09, -0.01, -0.2,  0.3,  0.1, 
               0.2, -0.5, -0.1,  0.7, -0.04, 0.02, -0.08,
               -0.2, -0.7, -0.26, -0.09, -0.04, 0.05,  0.01,
               -0.26, -0.36, -0.26, -0.05, -0.03, 0.02, -0.01,
               0.01, 0.01, -0.05)
mat1 <- matrix(mat1.data,nrow=6,ncol=5,byrow=TRUE)
rownames(mat1) <- paste0("cell", seq(1,6,1))
colnames(mat1) <- paste0("col", seq(1,5,1))

字符串
第二矩阵具有二进制值

mat2.data <- c(0,1,0,0,0,
               1,0,0,0,0,
               0,0,1,0,0,
               0,0,0,1,0,
               1,0,0,0,0,
               0,0,0,0,1)
mat2 <- matrix(mat2.data,nrow=6,ncol=5,byrow=TRUE)
rownames(mat2) <- paste0("cell", seq(1,6,1))
colnames(mat2) <- paste0("var", seq(1,5,1))


如何获得mat1的cols和mat2的vars之间的相关性?

pbossiut

pbossiut1#

您可以使用cor

> cor(mat1, mat2)
            var1        var2       var3        var4        var5
col1  0.06984303 -0.08834522  0.1766904 -0.55215763  0.37546719
col2 -0.10559715 -0.09349970  0.2003565 -0.09349970  0.12021390
col3 -0.91116795  0.33753145  0.1646495  0.26343918  0.38692630
col4  0.04919934 -0.55231599 -0.5523160  0.61454877  0.42785041
col5  0.49798831  0.27779780 -0.7838498 -0.03008002 -0.09377887

字符串
或者如果您只对相应列的相关性感兴趣

> diag(cor(mat1,mat2))
[1]  0.06984303 -0.09349970  0.16464949  0.61454877 -0.09377887

qv7cva1a

qv7cva1a2#

假设您希望每列都有cor(mat1[,1], mat2[,1])等的效果,则

Map(cor, asplit(mat1, 2), asplit(mat2, 2))
# $col1
# [1] 0.06984303
# $col2
# [1] -0.0934997
# $col3
# [1] 0.1646495
# $col4
# [1] 0.6145488
# $col5
# [1] -0.09377887

字符串
使用mapply代替Map得到一个简单的向量。

相关问题