5

我有一个x包含不同细胞系中 2000 个基因表达的矩阵 (30x2000) 和y一个连续变量结果的向量 (30x1)。我想计算每个基因与结果之间的 Pearson 相关性,因此,我期望 2000x1 的 r 值向量。我用过rcorr(x,y),但结果是一个 2000x2000 矩阵,所以我猜它忽略y并计算所有基因(手册说:

x = 至少 5 行至少 2 列的数字矩阵(如果 y 不存在)

但是我可以有不止一列并且也有y吗?我必须使用不同的功能吗?

4

2 回答 2

8

使用该功能cor将起作用。一般来说,如果x是 MxN并且 yy是 MxP,那么cor(x,y)将是一个 NxP 矩阵,其中条目 (i,j) 是 和 之间的相关x[,i]y[,j]

基于 SimonO101 的可重现示例:

> set.seed(1)
> x <- matrix( runif(12) , nrow = 3 )
> y <- runif(3)
> cor(x,y)
           [,1]
[1,]  0.3712437
[2,]  0.9764443
[3,]  0.2249998
[4,] -0.4903723

如果你只想要一个向量而不是一个矩阵:

> array(cor(x,y))
[1]  0.3712437  0.9764443  0.2249998 -0.4903723
于 2013-09-25T11:29:03.253 回答
7

您需要跨矩阵列apply的函数...corx

apply( x , 2 , cor , y = y )

一个可重现的例子

#  For reproducible data
set.seed(1)

#  3 x 4 matrix
x <- matrix( runif(12) , nrow = 3 )
#          [,1]      [,2]      [,3]       [,4]
#[1,] 0.2655087 0.9082078 0.9446753 0.06178627
#[2,] 0.3721239 0.2016819 0.6607978 0.20597457
#[3,] 0.5728534 0.8983897 0.6291140 0.17655675

# Length 3 vector
y <- runif(3)
#[1] 0.6870228 0.3841037 0.7698414

# Length 4 otuput vector
apply( x , 2 , cor , y = y )
#[1]  0.3712437  0.9764443  0.2249998 -0.4903723
于 2013-09-25T09:27:26.503 回答