> > library(tidyverse) > library(maSigPro) > library(readr) > > setwd("D:/ANorth...
🚨 错误信息
🤖 AI解决方案
错误于match.arg(method):
'arg' should be one of “holm”, “hochberg”, “hommel”, “bonferroni”, “BH”, “BY”, “fdr”, “none”
Error in match.arg(method) :
'arg' should be one of “holm”, “hochberg”, “hommel”, “bonferroni”, “BH”, “BY”, “fdr”, “none”
1. 错误翻译
> 错误于match.arg(method): 'arg' 应该是 "holm", "hochberg", "hommel", "bonferroni", "BH", "BY", "fdr", "none" 中的一个。
2. 原因分析
T.fit 函数中的 adjust 参数接受的校正方法字符串不正确。您传递的是 "fdr",而函数期望的是 "BH"(Benjamini & Hochberg),这是 fdr 的常见实现。
3. 解决方案
将 T.fit 函数中 adjust 参数的值从 "fdr" 修改为 "BH"。
R
library(tidyverse)
library(maSigPro)
library(readr)setwd("D:/ANorth/muilt/呼吸多组学-陈宵/Analysis-lym/1.单组学分析/转录组/4时序分析")
dir.create("maSigPro_results", showWarnings = FALSE)
groups <- c("Control", "Low", "High")
for (g in groups) {
cat("\n====== running", g, "======\n")
## 1 读入并对齐 ------------------------------------------------------------
mat <- read_csv(str_c("geneMatrix_", g, "_normalized_log2cpm.csv")) %>%
column_to_rownames("symble") %>% as.matrix()
meta <- read_csv(str_c("meta_", g, ".csv")) %>% arrange(sample)
mat <- mat[, meta$sample] # 严格对齐列顺序
## 2 design ≥2 列,replicate 为因子
design <- data.frame(
time = meta$time,
replicate = factor(meta$replicate)
)
rownames(design) <- meta$sample
## 3 maSigPro 两步回归 -----------------------------------------------------
fit <- p.vector(mat, design, Q = 0.05, "gaussian")
tfit <- T.fit(fit,
step.method = "two.ways.backward",
alfa = 0.05,
adjust = "BH") # 修正:使用 "BH" 代替 "fdr"
sig <- get.siggenes(tfit, rsq = 0.6)
## 4 写出结果 --------------------------------------------------------------
prefix <- str_c("maSigPro_results/", g)
write_csv(sig$sig.genes %>% as_tibble(rownames = "gene"),
str_c(prefix, "_sig_genes.csv"))
write_csv(tfit$sig.models %>% as_tibble(rownames = "gene"),
str_c(prefix, "_coef.csv"))
## 5 趋势图
pdf(str_c(prefix, "_trends.pdf"), width = 8, height = 5)
plot(tfit, name = g, clustering = TRUE)
dev.off()
## 6 可选:持续上调/下调基因
coef <- tfit$sig.models
up <- rownames(coef)[coef$time > 0 & coef$time < 0.05 & is.na(coef$time2)]
down <- rownames(coef)[coef$time < 0 & coef$time < 0.05 & is.na(coef$time2)]
write_csv(tibble(gene = up), str_c(prefix, "_up_genes.csv"))
write_csv(tibble(gene = down), str_c(prefix, "_down_genes.csv"))
}
4. 预防措施
?function_name 命令)以了解参数的有效值和预期格式。maSigPro 包是基于 limma 等包的,了解常用的多重检验校正方法(如 "BH")并使用它们可以避免此类问题。