我是R的新手,我有25个RNAseq结果样本。我想应用相同的函数来计算我的目标基因(比如基因ABC)与所有25个样本的相关性。
我知道如何单独做到这一点。这是我的代码:
df <- read.table("Sample1.txt", header=T, sep="\t")
# gene expression values of interest
gene <-as.numeric(df["ABC",])
# correlate gene with all others genes in the expression set
correlations <- apply(df,1,function(x){cor(gene,x)})
但现在我有25个。我使用lapply一次阅读它们。
data <- c("Sample1.txt", "Sample2.txt",..."Sample25.txt")
df <- lapply(data, read.table)
names(df) <- data
然而,我迷失了如何将其与上面的其余代码连接以计算基因相关性。我已经阅读了一些相关的线程,但仍然无法弄明白。谁能帮助我?谢谢!
答案 0 :(得分:2)
你应该这样做:
files <- c("Sample1.txt", "Sample2.txt", ..., "Sample25.txt")
myfunc <- function(file) {
df <- read.table(file, header=TRUE, sep="\t")
# gene expression values of interest
gene <- as.numeric(df["ABC",])
# correlate gene with all others genes in the expression set
correlations <- apply(df, 1, function(x) cor(gene, x) )
}
lapply(files, myfunc)
这是我推荐给你的款式。这是我会做的风格:
myfunc <- function(file) {
df <- read.table(file, header=TRUE, sep="\t")
gene <- as.numeric(df["ABC",]) # gene expression values of interest
apply(df, 1, FUN=cor, y=gene) # correlate gene with all others
}
files <- c("Sample1.txt", "Sample2.txt", ..., "Sample25.txt")
lapply(files, myfunc)
您可能希望将结果保存到对象:
L <- lapply(files, myfunc)
对于函数甚至可以做(因为cor()
接受矩阵参数)):
myfunc <- function(file) {
df <- read.table(file, header=TRUE, sep="\t")
cor(t(df), y=as.numeric(df["ABC",])) # correlate gene with all others
}