You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PCA代码运行报错:0×0矩阵问题排查求助

R语言PCA报错:0×0矩阵问题解析

报错代码

df_scaled <- as.data.frame(scale(df))
features <- df_scaled[, -10]
target <- df_scaled[, 10]
pc <- PCA(features, graph = FALSE)
print(pc)

错误提示

Error in eigen(crossprod(t(X), t(X)), symmetric = TRUE) : 0х0 matrix

错误原因

这个报错的核心是传入PCA函数的features是空数据集(0列),导致函数无法计算协方差矩阵,进而触发矩阵运算错误。结合你的数据集情况(19178行、29列),大概率是以下原因之一:

  • 列索引使用错误:
    你用df_scaled[, -10]意图删除第10列提取特征,但如果df_scaled的列名是字符型(比如列名是字符串而非数字),或者你误将列名当成了位置索引,就可能导致意外删除所有列。比如如果目标列是名为"10"的列而非第10列,应该用df_scaled[, -which(colnames(df_scaled) == "10")]精准删除,而非直接用-10。

  • scale操作后数据结构异常:
    如果原始数据集df存在大量非数值型列,scale函数会报错,但如果df是tibble这类特殊结构,as.data.frame(scale(df))可能意外丢失列;或者某列所有值完全相同,scale后产生全NA,后续操作中这些列被误过滤,最终导致features为空。

  • 变量索引逻辑错误:
    比如你之前的代码不小心修改了df的列数,或者df导入时就丢失了列,导致df_scaled实际列数远少于29列,此时-10可能会删除唯一的列,让features变成空集。

快速排查方法

运行dim(features)查看维度,如果输出是[1] 19178 0,就坐实了features为空的问题。接着检查colnames(df_scaled)确认列名和位置,再验证df_scaled[, -10]的结果是否符合预期。

内容的提问来源于stack exchange,提问作者Victoria

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 19:35:21