我想找到一个基因与其他基因的相关性。最后我将把这个函数放到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