R 中的意外 na 错误

Unexpected na error in R

(复活节快乐)

我一直在尝试在 R 中制定一个 PDDP 算法,并且在使用 princomp 函数时我将 运行 保持在一个单一的小错误中。这是错误声明:

Error in cov.wt(z) : 'x' must contain finite values only

根据一些粗略的研究,只要 princomp 函数中的数据中存在 NA 或未定义的值,就会出现此错误。但是,我使用的数据(维基百科的虹膜数据)中没有 NA。这是包含 princomp 的代码行:

pr <- princomp(data[iIndexes,], scores = TRUE, na.action = na.exclude)

根据我的研究,我被告知标准 na.action 值 (na.omit) 目前存在漏洞,因此建议我改用 na.exclude。我还被建议包含一个函数作为第一个参数,但这也没有改变错误消息。

这是我得到该信息的地方:Omit NA and data imputation before doing PCA analysis using R

如果您需要上下文中的其余代码,请告诉我。 谢谢

编辑:根据要求,这里是dput(data[iIndexes,])的输出:

 structure(c(36L, 19L, 10L, 6L, 32L, 52L, 8L, 28L, 2L, 20L, ...), .Label = 
 c("4.3,3,1.1,0.1", "4.4,2.9,1.4,0.2", "4.4,3,1.3,0.2", "4.4,3.2,1.3,0.2", ...), 
 class = "factor")

椭圆是与其余部分相似的进一步数据集,每组 150 个样本。

你 运行 没有 class = "factor" 参数的代码 pr 将 return 正确。

这对我有用:

a = c(36L, 19L, 10L, 6L, 32L, 52L, 8L, 28L, 2L, 20L)
b = c("stringa", "stringb")

data = structure(a, .Label = b)

pr <- princomp(data, scores = TRUE, na.action = na.exclude)
pr

pr returns:

Call:
princomp(x = data, scores = TRUE, na.action = na.exclude)

Standard deviations:
  Comp.1 
14.95359 

 1  variables and  10 observations.

解决方案

取消数据分类:

tempVar <- unclass(data[iIndexes,])

和运行 tempVar

上的代码