R:Pearson相关rcorr(x,y)[x=矩阵,y=向量]忽略y
我有一个不同细胞系中2000个基因表达的矩阵R:Pearson相关rcorr(x,y)[x=矩阵,y=向量]忽略y,r,correlation,R,Correlation,我有一个不同细胞系中2000个基因表达的矩阵x(30x2000)和一个连续可变结果的载体y(30x1)。我想计算每个基因和结果之间的Pearson相关性,因此,我希望得到一个2000x1的r值向量。我使用了rcorr(x,y),但结果是一个2000x2000矩阵,所以我猜它忽略了y,并根据所有基因计算所有基因(手册上说: x=至少有5行和2列的数字矩阵(如果没有y) 但是我可以有多个列并且也有y吗?我必须使用不同的函数吗?您需要在x矩阵的列中应用cor函数 apply( x , 2 , cor
x
(30x2000)和一个连续可变结果的载体y
(30x1)。我想计算每个基因和结果之间的Pearson相关性,因此,我希望得到一个2000x1的r值向量。我使用了rcorr(x,y)
,但结果是一个2000x2000矩阵,所以我猜它忽略了y
,并根据所有基因计算所有基因(手册上说:
x=至少有5行和2列的数字矩阵(如果没有y)
但是我可以有多个列并且也有
y
吗?我必须使用不同的函数吗?您需要在x
矩阵的列中应用cor
函数
apply( x , 2 , cor , y = y )
可复制的例子
#用于再现数据
种子(1)
#3 x 4矩阵
x使用函数cor
将起作用。通常,如果x
是MxNy
是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
你不需要在这里使用apply
。只要cor(x,y)
就可以了,或者如果你想把它作为向量而不是矩阵array(cor(x,y))
@mrip,你完全正确。为什么不把它作为一个答案添加进来呢?谢谢@mrip,@SimonO101。rcorr
返回3个矩阵(r,n,p).可以通过使用apply
来调整rcorr
,这样也可以得到p值向量吗?或者cor
的一些选项也可以得到p值向量吗?我不熟悉rcorr
,但它听起来像是apply(x,2,函数(a,b){rcorr(a,b)$p},y)
应该给出p
矩阵。
> 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