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

使用FactoMineR执行CA分析时变量投影着色报错的技术求助

问题解决:对应分析(AFC)中行着色报错及数据转换问题

核心错误原因拆解

第一个报错(droplevels方法不适用)

  1. 参数误用:你用了col.sup参数,但这个参数是用来设置补充变量的点颜色,而你要给**行(站点)**着色,应该用col.row。
  2. 取值错误:afc$GAB不存在——FactoMineR的CA结果对象中,定性补充变量的信息存储在afc$quali.sup下,不会直接作为顶级属性,你应该从原始数据框df中提取GAB的因子值。
  3. qual.sup参数设置错误:你指定quali.sup=1:5,但这应该是你用于CA主分析的数值型频数列,而GAB作为定性分组变量,应该单独指定其列索引(比如如果GAB是第6列,就写quali.sup=6)。

第二个报错(1:nrow(X)参数长度为0)

lapply(df, factor)返回的是列表而非数据框,且CA要求主分析数据为数值型频数表,把所有列转成因子会彻底破坏数据结构,导致CA无法识别有效行,进而报错。


正确解决步骤

1. 整理数据结构并运行CA

假设你的数据框df中:

  • 前5列为数值型频数变量(用于CA主分析)
  • 第6列为GAB(站点分组的定性变量,作为补充变量)
# 先确保GAB是因子类型
df$GAB <- factor(df$GAB)

# 正确运行CA:主数据为前5列,qual.sup指定GAB的列索引
afc <- CA(df, quali.sup = 6)

2. 按GAB着色绘制行投影

用col.row参数指定行的颜色,取值直接从原始数据框提取GAB:

fviz_ca_row(afc, title = "Projection des stations", 
            col.row = df$GAB, legend.title = "GAB")

3. 处理行和为0的站点

如果部分站点的行和为0,可将其设为补充行,避免影响CA计算:

# 找出行和为0的站点索引
row_zero_idx <- which(rowSums(df[, 1:5]) == 0)

# 运行CA时将这些行设为补充行
afc <- CA(df, row.sup = row_zero_idx, quali.sup = 6)

# 绘图时可选择隐藏补充行
fviz_ca_row(afc, title = "Projection des stations", 
            col.row = df$GAB, legend.title = "GAB",
            invisible = "row.sup")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.02 11:34:52