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

R中使用soc.ca包做MCA仅纳入变量1值的报错解决

soc.ca包MCA分析报错修复+仅保留1值参与分析方案

报错翻译

Error in rowSums(ind.reduced[, varlist.long.red == unique(varlist)[i]]) :
'x'必须是至少二维的数组

问题根源

  1. passive参数类型不匹配:你用options(passive=0)传入的是数值型0,但之前把变量转成了水平为字符型"0"的因子,参数和因子水平类型不一致,导致内部数组处理时维度异常。
  2. attach()函数容易引发环境变量冲突,没必要使用。

修正代码

# 安装并加载soc.ca包
if (!require(soc.ca)) {install.packages("soc.ca")} 
library(soc.ca)

# 批量将所有变量转为因子,水平设为字符型的"0"和"1"
data_spss[] <- lapply(data_spss, function(col) factor(col, levels = c("0", "1")))

# 执行MCA:直接指定passive为"0",匹配因子水平
result <- soc.mca(
  active = data_spss, 
  sup = NULL, 
  identifier = NULL, 
  passive = "0",  # 这里用字符型,和因子水平对应
  weight = NULL, 
  Moschidis = FALSE,
  detailed.results = FALSE
)

# 绘图:此时只有变量的1值会显示,所有样本都保留
plot(result)

核心说明

  • 用lapply批量处理因子比循环更高效简洁。
  • 设置passive="0"后,变量的0值会被当作被动类别:不参与MCA的计算过程,也不会出现在可视化图中,但所有样本都会被保留用于分析,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 17:55:20