library(tidyverse) library(maSigPro) ## 1 读入矫正矩阵 -------------------------------...

2025年09月06日 19:43 响应: 2.32秒 状态: success

🚨 错误信息

library(tidyverse) library(maSigPro) ## 1 读入矫正矩阵 ------------------------------------------------------------- mat <- read_csv("geneMatrix_Control_normalized_log2cpm.csv") %>% column_to_rownames("symble") %>% as.matrix() ## 2 读 meta 并严格对齐 ------------------------------------------------------- meta <- read_csv("meta_Control.csv") ## 关键:让矩阵列顺序 与 设计矩阵行顺序 完全一致 meta <- meta %>% arrange(sample) # 先排序 mat <- mat[, meta$sample] # 再按同样顺序重排矩阵列 ## 3 构建设计矩阵(行名 = 样本名) ------------------------------------------- design <- data.frame(time = meta$time, replicate = factor(meta$replicate)) rownames(design) <- meta$sample ## 4 跑 maSigPro(Gaussian,不加 counts) fit <- p.vector(mat, design, Q = 0.05, family = "gaussian") tfit <- T.fit(fit, step.method = "two.ways.backward", alfa = 0.05) sig <- get.siggenes(tfit, rsq = 0.6) ## 5 写出结果 prefix <- "maSigPro_results/Control" dir.create(dirname(prefix), showWarnings = FALSE) 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")) pdf(str_c(prefix, "_trends.pdf"), width = 8, height = 5) plot(tfit, name = "Control", clustering = TRUE) dev.off()

🤖 AI解决方案

Error in check.fit(fit) :
  The design matrix must have at least two columns.

错误翻译
>
> 错误 in check.fit(fit) :
>   设计矩阵必须至少有两列。
> 

原因分析
p.vector 函数要求设计矩阵 (design) 至少包含两列,用于描述实验设计。当前提供的 design 矩阵只有一列 time,不符合要求。

解决方案
在构建 design 矩阵时,确保至少包含两个描述实验条件的列。将 replicate 列也包含进来,并确保其被正确转换为因子类型。

## 3 构建设计矩阵(行名 = 样本名) -------------------------------------------
design <- data.frame(time      = meta$time,
                     replicate = factor(meta$replicate)) # 确保 replicate 是因子类型
rownames(design) <- meta$sample

## 4 跑 maSigPro(Gaussian,不加 counts)
# 确保 design 至少有两列
# 如果您的 meta 中只有 time 信息,需要考虑如何增加一个维度,
# 例如,如果存在 batch 或 other experimental factors,可以将其加入 design。
# 这里我们假设 replicate 是一个有效的分组信息,并已包含在 meta 中。
fit  <- p.vector(mat, design, Q = 0.05, family = "gaussian")
tfit <- T.fit(fit, step.method = "two.ways.backward", alfa = 0.05)
sig  <- get.siggenes(tfit, rsq = 0.6)

预防措施

  • 在运行 maSigPro 之前,仔细检查 design 矩阵的结构,确保其包含的变量足以描述您的实验设计,并且至少有两列。

  • 始终验证 design 矩阵的行名(样本名)与输入矩阵 mat 的列名(样本名)完全一致且顺序匹配。