簡體   English   中英

R: Pearson 相關 rcorr(x,y) [x=matrix, y=vector] 忽略 y

[英]R: Pearson correlation rcorr(x,y) [x=matrix, y=vector] ignores y

我有不同細胞系中 2000 個基因表達的矩陣x (30x2000) 和連續變量結果的向量y (30x1)。 我想計算每個基因與結果之間的 Pearson 相關性,因此,我期望 2000x1 的 r 值向量。 我已經使用了rcorr(x,y)但結果是一個 2000x2000 的矩陣,所以我猜它忽略了y並計算了所有基因(手冊說:

x = 至少有 5 行和至少 2 列的數字矩陣(如果 y 不存在)

但是我可以有不止一列並且也有y嗎? 我必須使用不同的功能嗎?

使用cor函數會起作用。 一般來說,如果x是 MxN 並且y是 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

您需要在x矩陣的列中apply cor函數...

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM