r语言 - 如何计算一个基因与其他基因之间的相关性



我想找到一个基因与其他基因的相关性。最后我将把这个函数放到shiny中。

我的意思是当我选择输入一个基因时,我可以得到有多少其他基因与这个基因密切相关。这些相关基因可以在主面板中输出,甚至可以作为文本或excel文件下载。

原谅我不恰当的表达,因为我是新手。

我的样本FPKM基因计数如下:

##  library(shiny)
##  library(dplyr)
##  library(tidyr)
##  library(ggplot2)
###
mean_data <- data.frame(
Name = c(paste0("Gene_", LETTERS[1:20])),
matx <- matrix(sample(1:1000, 1000, replace = T), nrow = 20)
)
names(mean_data)[-1] <- c(paste0("Sample_", 1:50))
rownames(mean_data)<-mean_data[,1]
mean_data<-mean_data[,-1]
## I don't know the code below is right or not . But I wanna the correlation between the input one and the others 
corResult=apply(mean_data,1,function(x){
cor(x[1:25],x[26:50],method="spearman")
})
hist(corResult)

corResult_test=apply(mean_data,1,function(x){
cor.test(x[1:25],x[26:50],method="spearman",exact = F)$p.value
})
table(abs(corResult)>0.65 & corResult_test<0.05)

有人能帮我吗?给我一个合适的方法。

不同的感激。

psych包中检查出corr.test;这应该是你想要的:

library(psych)
set.seed(7)
mean_data <- data.frame(
Name = c(paste0("Gene_", LETTERS[1:20])),
matx <- matrix(sample(1:1000, 1000, replace = T), nrow = 20)
)
names(mean_data)[-1] <- c(paste0("Sample_", 1:50))
rownames(mean_data) <- mean_data[,1]
mean_data <- mean_data[,-1]
myCor <- function(x="Gene_A", mat=mean_data, pval=.05, R=.65, method="spearman"){
tm <- corr.test(t(mat[x,,drop=FALSE]),
y = t(mat), use = "pairwise", method=method, adjust="holm", 
alpha=pval, ci=TRUE, minlength=5)
res <- setdiff(colnames(tm$r)[which(with(tm, abs(r) > R & p < pval))], x)
if(length(res) > 0) res 
}
res <- sapply(rownames(mean_data), myCor, pval=.1, R=.3) 
res[lengths(res) > 0]
#> $Gene_A
#> [1] "Gene_K"
#> 
#> $Gene_H
#> [1] "Gene_K"
#> 
#> $Gene_K
#> [1] "Gene_A" "Gene_H"

由reprex包(v1.0.0)创建于2021-02-03

相关内容

  • 没有找到相关文章

最新更新