我正在尝试在 R 中使用 FactoMineR 在以下数据集上运行 MCA
(MCA(widedata.emf.df)
,但我得到了
“
aggregate.data.frame(as.data.frame(x), ...)
中的错误:参数必须具有相同的长度”。
知道什么可能会导致这种情况吗?这是str。
str(widedata.emf.df)
'data.frame': 196 obs. of 34 variables:
$ ID : int 1 2 3 4 5 6 7 8 9 10 ...
$ age : num 27 37 20 26 34 33 44 27 26 33 ...
$ gender : Factor w/ 3 levels "female","male",..: 1 2 2 2 2 3 1 1 2 2 ...
$ education : Factor w/ 3 levels "bac-uni","mast-phd-uni",..: 1 1 3 3 2 2 3 2 1 2 ...
$ subj.knowl.quant: Factor w/ 3 levels "Q1","Q2","Q3": 1 2 1 3 3 1 1 1 3 2 ...
$ obj.knowl.quant : Factor w/ 3 levels "Q1","Q2","Q3": 2 2 3 1 3 1 1 1 3 1 ...
$ electric : Factor w/ 2 levels "0","1": 2 2 1 2 1 2 2 1 1 2 ...
$ antenna : Factor w/ 2 levels "0","1": 1 2 1 1 1 1 1 1 1 1 ...
$ signal : Factor w/ 2 levels "0","1": 1 2 1 1 1 1 1 1 1 1 ...
还有更多因素看起来像此代码末尾的三个因素(电、天线、信号),但它们都具有相同的结构(二进制编码),因此为了节省篇幅,我删除了它们。 数据集没有 NA。
我在网上看到这是一个常见的 R 错误,因为没有正确指定变量。但是我不明白是什么导致了这里。这是回溯输出。
traceback()
5: stop("arguments must have same length")
4: aggregate.data.frame(as.data.frame(x), ...)
3: aggregate.default(res.mca$var$contrib/100, by = list(factor(variable)),
FUN = sum)
2: aggregate(res.mca$var$contrib/100, by = list(factor(variable)),
FUN = sum)
1: MCA(widedata.emf.df)```
该错误通常意味着您尝试聚合的向量(此处为
res.mca$var$contrib/100
)或分组变量(factor(variable)
)以意外的方式更改了大小。根据我的经验,这通常是因为上游过程导致一个或另一个向量为空。
FactoMineR::MCA
看起来不像是一个简单的函数(或者至少我不够聪明,无法立即发现问题),所以我会从 GitHub 克隆只读存储库,在 中的该行之前添加一个
browser()
MCA
,构建并重新安装,然后手动检查元素以查看该行的哪一部分导致了问题,并从那里向后工作。