r统计建模

R 报错:Lapack routine dgesv: system is exactly singular

和 computationally singular 同源,但更彻底——矩阵里有完全为零的主元,通常是某列全 0 或完全重复。

报错原文

Error in solve.default(...) : Lapack routine dgesv: system is exactly singular: U[3,3] = 0

为什么会报这个错

和 computationally singular 同源,但更彻底——矩阵里有完全为零的主元,通常是某列全 0 或完全重复。

怎么解决

找全零列和重复列删掉;检查因子水平是否有多余的空水平(droplevels())。

代码示例

# 找全零列
df[, sapply(df, function(c) all(c == 0))]

# 找重复列
df[, duplicated(as.list(df))]

# 清理空因子水平
df <- droplevels(df)

同工具的其他报错

报错解决了,但方法还没搞懂?

报错只是表象。因果推断、面板数据、稳健性检验这些方法背后的逻辑,知识库里按「原理 × 直觉 × 代码」讲清楚了。

进入知识库 →