R lm()用于单行,但不用于for循环
我试图在基因表达式值矩阵上使用for循环运行lm()。数据集分为人类和黑猩猩,我正在比较它们的相对表达。可以使用下载原始数据集。以下是我在本文中使用的前6行R lm()用于单行,但不用于for循环,r,lm,p-value,R,Lm,P Value,我试图在基因表达式值矩阵上使用for循环运行lm()。数据集分为人类和黑猩猩,我正在比较它们的相对表达。可以使用下载原始数据集。以下是我在本文中使用的前6行 >matrix Human_AF_8 Human_EU_11 Human_EU_4 Chimpanzee_4 Chimpanzee_6 Chimpanzee_5 ENSG00000000003 0.1394345 -0.27961627 -0.6147440 -0.1857581 0.199
>matrix
Human_AF_8 Human_EU_11 Human_EU_4 Chimpanzee_4 Chimpanzee_6 Chimpanzee_5
ENSG00000000003 0.1394345 -0.27961627 -0.6147440 -0.1857581 0.19963078 0.4290812
ENSG00000000005 -0.8167632 -0.81676316 0.5223724 2.6947268 -0.59724108 -0.7190366
ENSG00000000419 0.4391277 2.83122842 -0.2066077 0.7903616 -0.26222373 -0.5113423
ENSG00000000457 -1.4025076 -0.07813095 -0.6768202 1.9199726 -0.18687230 1.4537927
ENSG00000000460 -0.8636231 -0.02775471 -1.0507558 0.9997930 -0.01413707 -0.2064266
ENSG00000000938 1.7407105 0.51450595 -0.8887369 -1.1291976 -0.29129441 -0.4344628
在读取数据帧并将其转换为矩阵(第一列成为行名称)之后,我尝试拟合lm()函数并保存其统计摘要以计算p值
测试一行工作正常
# Making reference
species <- c(rep("human",3), rep("chimp",3))
# Testing for one row works fine
species.lm.sum <- summary(lm(matrix[1, ] ~ species))
# P value
pval <- pf(species.lm.sum$fstatistic[1],
species.lm.sum$fstatistic[2],
species.lm.sum$fstatistic[3],
lower.tail = FALSE)
# Printing
pval
p.S.如果尝试使用,请按以下方式更改引用
species <- c(rep("human", 14), rep("chimp", 6))
物种无法重现您的问题。我使用的是R版本4.0.3
tmp <- tempfile()
download.file("ftp://ftp.ncbi.nlm.nih.gov/geo/series/GSE45nnn/GSE45263/suppl/GSE45263_gene.expression.measurements.txt.gz", tmp)
data <- as.matrix(read.table(gzfile(tmp), header=TRUE, row.names=1))
unlink(tmp)
species <- c(rep("human", 14), rep("chimp", 6))
species.lm.sum <- summary(lm(data[1, ] ~ species))
pval <- pf(species.lm.sum$fstatistic[1],
species.lm.sum$fstatistic[2],
species.lm.sum$fstatistic[3],
lower.tail=FALSE)
pval
# value
# 0.7540272
p.values <- c()
for (i in 1:nrow(data)) {
stat <- summary(lm(data[i, ] ~ species))
pval <- pf(stat$fstatistic[1],
stat$fstatistic[2],
stat$fstatistic[3],
lower.tail=FALSE)
p.values <- append(p.values, pval)
}
head(p.values)
# value value value value value value
# 0.75402720 0.91408640 0.22396503 0.01239904 0.83018858 0.14561322
tmp谢谢你的回答!我使用的是相同的版本。但我是在R减价块中运行代码的。你能试试这个吗?我已在原始帖子中添加了区块。@Priyanshrivastava工作正常,只是将我答案的全部代码粘贴到区块中。也许是包裹冲突?尝试一个新的R会话,不需要任何库调用。谢谢,在我重新启动会话后它就可以工作了。的确,这是一场图书馆冲突。@Priyanshrivastava太好了,恭喜,很高兴它起作用了。
species <- c(rep("human", 14), rep("chimp", 6))
```{r, "LM"}
p.values <- c()
for (i in 1:nrow(data)) {
stat <- summary(lm(data[i, ] ~ species))
pval <- pf(stat$fstatistic[1],
stat$fstatistic[2],
stat$fstatistic[3],
lower.tail=FALSE)
p.values <- append(p.values, pval)
}
head(p.values)
```
tmp <- tempfile()
download.file("ftp://ftp.ncbi.nlm.nih.gov/geo/series/GSE45nnn/GSE45263/suppl/GSE45263_gene.expression.measurements.txt.gz", tmp)
data <- as.matrix(read.table(gzfile(tmp), header=TRUE, row.names=1))
unlink(tmp)
species <- c(rep("human", 14), rep("chimp", 6))
species.lm.sum <- summary(lm(data[1, ] ~ species))
pval <- pf(species.lm.sum$fstatistic[1],
species.lm.sum$fstatistic[2],
species.lm.sum$fstatistic[3],
lower.tail=FALSE)
pval
# value
# 0.7540272
p.values <- c()
for (i in 1:nrow(data)) {
stat <- summary(lm(data[i, ] ~ species))
pval <- pf(stat$fstatistic[1],
stat$fstatistic[2],
stat$fstatistic[3],
lower.tail=FALSE)
p.values <- append(p.values, pval)
}
head(p.values)
# value value value value value value
# 0.75402720 0.91408640 0.22396503 0.01239904 0.83018858 0.14561322