打印类别时FactoryMiner的summary.FAMD出错

打印类别时FactoryMiner的summary.FAMD出错,r,categories,pca,R,Categories,Pca,我正在和FactoMineR做一个FAMD,用imputeFAMD治疗NAs。FAMD工作正常,但在打印类别时,摘要会产生错误。共有19个连续变量和2个分类变量 library(FactoMineR) library(missMDA)#handle missing values n = c(2, 3, 5, 3, 4, 6, 7, 3, 7, 3, 7, 8, 11, 4, 13) s = c("aa", "bb", "cc", "aa", "bb", "cc", "aa", "bb", "c

我正在和FactoMineR做一个FAMD,用imputeFAMD治疗NAs。FAMD工作正常,但在打印类别时,摘要会产生错误。共有19个连续变量和2个分类变量

library(FactoMineR)
library(missMDA)#handle missing values
n = c(2, 3, 5, 3, 4, 6, 7, 3, 7, 3, 7, 8, 11, 4, 13) 
s = c("aa", "bb", "cc", "aa", "bb", "cc", "aa", "bb", "cc", "aa", "bb", "cc", "aa", "bb", "cc") 
b = c(1, 4, NA, NA, 2, 1, 7, 1, 2, NA, NA, 2, 1, 7, NA) 
all = data.frame(n, s, b)
complete = imputeFAMD(all)
FAMDall = FAMD(all, tab.comp = complete)
summary(FAMDall, nbelements = Inf, ncp=4)
在连续变量之后,summaryFAMDall,nElements=Inf,ncp=4的输出停止如下:

Categories
Error in mat[, indice + nb.col * (0:(ncp - 1))] <- obj$cos2[1:nbelements,  : 
  number of items to replace is not a multiple of replacement length

问题似乎出在tab.comp参数中。FAMD上的FactoMineR文档要求输入由imputeFAMD生成的整个对象,但您需要的是$tab.disj列表元素中的插补矩阵。参见?imputeFAMD中的示例部分。这应该起作用:

n = c(2, 3, 5, 3, 4, 6, 7, 3, 7, 3, 7, 8, 11, 4, 13) 
s = c("aa", "bb", "cc", "aa", "bb", "cc", "aa", "bb", "cc", "aa", "bb", "cc", "aa", "bb", "cc") 
b = c(1, 4, NA, NA, 2, 1, 7, 1, 2, NA, NA, 2, 1, 7, NA) 
all = data.frame(n, s, b)
complete = imputeFAMD(all)
FAMDall = FAMD(all, tab.comp = complete$tab.disj)
summary(FAMDall, nbelements = Inf, ncp=4)

没有数据样本,你的问题是不可重复的。此外,inputeFAMD不在LibraryFactoryMiner中,而是在librarymissMDA包中。请编辑您的问题,以便它可以复制。刚刚添加了MWE。这是我首先尝试的,但FAMD已经失败,在tab中出现错误消息。comp$call:$运算符对原子向量无效Does classcomplete$tab.disj为您返回矩阵?您有最新版本的FactoryMiner和missMDA吗?如果tab.comp=complete$tab.disj没有为您修复它,那么我无法复制它。示例代码对我来说运行得很好。是的,>classcomplete$tab.disj返回[1]矩阵,答案中的代码产生上述错误。我的R3.0.1无法更改,FactoMineR 1.28我在Missda_1.12和FactoMineR_1.39上。虽然问题中的代码产生错误,但答案中的代码运行平稳,因此我无法在R3.4.3上重现您的其他错误。