R:Pearson相关rcorr(x,y)[x =矩阵,y =向量]忽略y

时间:2013-09-25 09:02:15

标签: r correlation

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

  

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

但是,我可以拥有多个列并且还有y吗?我是否必须使用其他功能?

2 个答案:

答案 0 :(得分:5)

使用函数cor将起作用。通常,如果x是MxN而且y是MxP,则cor(x,y)将是NxP矩阵,其中条目(i,j)是x[,i]和{之间的相关性{1}}。

以SimonO101的可重复示例为基础:

y[,j]

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

> 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

答案 1 :(得分:3)

您需要在apply矩阵的列中cor x函数...

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