【发布时间】:2016-07-17 06:41:26
【问题描述】:
我有一个数据框,第 1 列是基因,所有其他列是该基因在不同条件下的基因表达数据。我想逐个基因地去基因并将所有表达值除以该基因的中值表达值。我在一个名为 s.med.df 的数据框中有中位数。
我试图指示 R 将所有表达列 (2:n) 但不是第一列除以每个基因的中值。我是 R 新手,但到目前为止我的脚本如下:
Con1 <- c(5088.77, 274.62, 251.97, 122.21)
Con2 <- c(4382.59, 288.55, 208.12, 171.93)
Con3 <- c(4732.81, 417.43, 305.58, 132.93)
Solid.df <- data.frame(Gene = c("A", "B", "C", "D"), Con1=Con1, Con2=Con2, Con3=Con3)
Gene Con1 Con2 Con3
A 5088.77 4382.59 4732.81
B 274.62 288.55 417.43
C 251.97 208.12 305.58
D 122.21 171.93 132.93
n <- ncol(Solid.df)
genes = levels(s.med.df$Gene)
Solid.mt.df = Solid.df
for (i in 1:length(genes)) {
gene = genes[i]
Solid.mt.df[2:n][Solid.mt.df$Gene == gene] = Solid.mt.df[2:n][Solid.mt.df$Gene == gene] / s.med.df$Medians[i]
print(gene)
}
提前谢谢你
【问题讨论】:
-
显示您的数据将有助于重现问题。您可能还想使用
apply函数之一来加快计算速度。