gpt4 book ai didi

r - 将相同的函数应用于 R 中的多个数据集

转载 作者:行者123 更新时间:2023-12-04 11:22:59 25 4
gpt4 key购买 nike

我是 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

但是,我不知道如何将它与我上面的其余代码连接起来以计算基因相关性。我已经阅读了一些相关的主题,但仍然无法弄清楚。有人可以帮助我吗?谢谢!

最佳答案

你应该做:

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
}

关于r - 将相同的函数应用于 R 中的多个数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43417941/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com