首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R: Pearson相关rcorr(x,y) [x=matrix,y=vector]忽略y

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

Stack Overflow用户
提问于 2013-09-25 09:02:14
回答 2查看 9.4K关注 0票数 5

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

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

但是,我可以有多个列,也可以有y吗?我需要使用不同的功能吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-25 09:27:26

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

代码语言:javascript
复制
apply( x , 2 , cor , y = y )

可复制的例子

代码语言:javascript
复制
#  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
票数 7
EN

Stack Overflow用户

发布于 2013-09-25 11:29:03

使用函数cor就可以了。通常,如果x是MxN安迪y是MxP,那么cor(x,y)将是一个NxP矩阵,其中条目(i,j)是x[,i]y[,j]之间的关联。

基于SimonO101 101的可复制示例:

代码语言:javascript
复制
> 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

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

代码语言:javascript
复制
> array(cor(x,y))
[1]  0.3712437  0.9764443  0.2249998 -0.4903723
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19000557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档