【发布时间】:2015-03-13 00:00:22
【问题描述】:
我有一个包含 200 行和 20 列的数据集,我想在 R 中使用 prcomp() 执行 PCA。但这不起作用,因为当我执行 str(x) 时,我的第一列被列为整数。第一列的数字介于 0 和 4 之间,表示用于获取我的数据集的加热类型。所以这也必须在 PCA 中使用,因为我知道加热类型对其他 19 列有影响,但我无法启动 PCA,因为它被列为整数。我该如何解决这个问题?
该列包含重要信息,我也想使用此信息,但我不能,因为它被列为整数而不是数字,当我尝试 as.numeric() 时,它显示"Error: (list) object cannot be coerced to type 'double'"。
我用
解决了dat_test$heating<-as.numeric(as.character(dat_test$heating))
str(dat_test)
但是我的 PCR 还是不行。
data.prcomp<-prcomp(dat_test,scale.=TRUE,na.rm=TRUE)
返回
Error in svd(x, nu = 0) : infinite or missing values in 'x'
我总共有 2 个 NA 值。这应该仍然适用于na.rm 或na.action=na.omit,但它没有。
【问题讨论】:
-
你看过这个讨论吗? stackoverflow.com/questions/12078291/…我认为通过对您问题的第一部分的编辑,这可能是重复的。
-
@LJW 抱歉...我找到了您在上面引用的帖子,除了我自己的搜索之外没有任何其他内容。我很高兴看到它得到了证实。干杯。