【问题标题】:R programming MCA() in FactoMineR error messageR 在 FactoMineR 错误消息中编程 MCA()
【发布时间】:2016-02-04 04:06:28
【问题描述】:

我使用 R 中 FactoMineR 包中的 MCA() 函数对一组大约 160 个变量和大约 2000 个观察值进行多重对应分析。大约有 150 个变量是连续的,所以我首先使用 cut() 函数将这些连续变量转换为分类变量,然后使用 MCA() 函数。

我的代码很简单,像这样:

library(FactoMineR)

data<-read.csv('demographics.csv')

for (i in 9:length(data)){

   temp<-unlist(data[i],use.names=FALSE)

   data[i]<-cut(temp,breaks=5,labels=c('A','B','C','D','E'))
}

MC<-MCA(data,ncp=10,graph=TRUE)

运行代码后,我收到以下错误消息。

Error in dimnames(res) <- list(attributes(tab)$row.names, listModa) : length of 'dimnames' [2] not equal to array extent

我想知道为什么会出现这个错误以及如何解决它。我的表中没有缺失数据,所有变量都是分类变量。

如果有人遇到过类似的问题并愿意提供帮助,我将不胜感激。非常感谢。

【问题讨论】:

    标签: r r-package


    【解决方案1】:

    我之前遇到过这个错误,因为该函数要求变量是因子(并且我传递给它的数据没有完全转换为因子)。与许多其他 R 函数不同,即使所有列都是分类的,这个函数也不会为您转换数据。

    我不太确定您的数据是什么,但很可能有一列或多列不是因子变量。如果您的第 1 到 8 列已经是因素,那么它可能在 read.csv 调用中;当您从 csv 中读取字符串变量时,它们会自动转换为因子,但数字变量不会。

    【讨论】:

    • 是的,将所有输入变量转换为因子应该可以解决这个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-13
    • 1970-01-01
    • 2013-10-07
    • 1970-01-01
    • 2012-09-25
    • 1970-01-01
    相关资源
    最近更新 更多