Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:Pearson相关rcorr(x,y)[x=矩阵,y=向量]忽略y_R_Correlation - Fatal编程技术网

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

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

我有一个不同细胞系中2000个基因表达的矩阵
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
是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

你不需要在这里使用
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