我正在尝试使用有关4种研究物种的所有信息对最终数据框进行MFA分析。
library(FactoMineR)
ff <- final_frame
ff <- ff[, colSums(is.na(ff)) != nrow(ff)] #making sure there are no missing values
for (i in 1: (d+2)) # d is the number of characters columns. Turning all categorical input into factors
{
ff[,i] <- as.factor(final_frame[,i])
}
dim<- dim(ff)[2] - maxPredict*2 - d -2
res = MFA(ff[,2:dim(ff)[2]], group=c(1, d, maxPredict*2, dim), type=c("n", "n" ,"s", "s"), ncp=2, name.group=c("hyp.species", "characters", "morphometrics", "climatic"))
plot(res,choix="ind",partial="all")
但是,我不断收到错误消息:
Error in eigen(crossprod(t(X), t(X)), symmetric = TRUE) :
infinite or missing values in 'x'
这很奇怪,因为我的数据框不包含任何无限或NA值。
> ff
cur_species hyp_species Character1 Character2 X1 X2 X1.1
1103A 0 2 0 0 0.6647259 0.05703327 1139
1103B 0 0 0 0 0.6647259 0.05703327 1183
1103C 1 1 1 1 0.6647259 0.05703327 1196
1103D 2 1 2 1 0.6647259 0.05703327 1160
X2.1
1103A -0.383871
1103B -4.183870
1103C 0.320000
1103D 1.845160
我甚至用str(ff)和许多其他功能检查了它。没有遗漏的值。
> str(ff)
'data.frame': 4 obs. of 8 variables:
$ cur_species: Factor w/ 3 levels "0","1","2": 1 1 2 3
$ hyp_species: Factor w/ 3 levels "0","1","2": 3 1 2 2
$ Character1 : Factor w/ 3 levels "0","1","2": 1 1 2 3
$ Character2 : Factor w/ 2 levels "0","1": 1 1 2 2
$ X1 : num 0.665 0.665 0.665 0.665
$ X2 : num 0.057 0.057 0.057 0.057
$ X1.1 : num 1139 1183 1196 1160
$ X2.1 : num -0.384 -4.184 0.32 1.845
我花了好几天检查整个脚本并试图弄清楚什么是错的,但我仍然不知道如何使这个工作。最奇怪的是,相同的脚本适用于更大的40个样本数据帧,它实际上包含NA。
> str(ff)
'data.frame': 40 obs. of 16 variables:
$ cur_species: Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
$ hyp_species: Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
$ Character1 : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
$ Character2 : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
$ X1 : num NA 0.665 0.665 NA NA ...
$ X2 : num NA -0.00142 -0.00142 NA NA ...
$ X3 : num NA 0.00232 0.00232 NA NA ...
$ X4 : num NA 0.057 0.057 NA NA ...
$ X5 : num NA 0.0479 0.0479 NA NA ...
$ X6 : num NA 0.0487 0.0487 NA NA ...
$ X1.1 : num 1550 1718 1718 NA NA ...
$ X2.1 : num 218 209 209 NA NA ...
$ X3.1 : num 197 193 193 NA NA ...
$ X4.1 : num 0.199 0.104 0.104 NA NA ...
$ X5.1 : num 1.03 1.12 1.12 NA NA ...
$ X6.1 : num 11.9 13.5 13.5 NA NA ...
有没有人有任何想法可能导致此问题以及如何解决此问题?我非常感谢任何帮助!
P.S。:抱歉,我必须使这个可重复。在这里,您可以下载final_frame.csv - http://www.sharecsv.com/s/752a1b1646013e511e851e99cf969445/final_frame.csv
final_frame <- read.csv("final_frame.csv", header = T, sep=",", row.names = 1)
在脚本之前运行此命令,您将获得我使用的相同的4个示例数据框。此外,对于此数据框:
d<- 2
maxPredict<- 1
以下是适用于我的脚本的更大的40个样本数据框的文件 - http://www.sharecsv.com/s/39188c26e1f17e32868bfe799be0a942/big_final_frame.csv
maxPredict <- 3
d <- 2
谢谢