即使允许NA,R函数prcomp也会以NA的值失败

时间:2012-08-22 17:21:48

标签: r pca na

我使用函数prcomp来计算前两个主要组件。但是,我的数据有一些NA值,因此函数会抛出错误。即使在帮助文件?prcomp

中提到,定义的na.action似乎也不起作用

以下是我的例子:

d <- data.frame(V1 = sample(1:100, 10), V2 = sample(1:100, 10))

prcomp(d, center = TRUE, scale = TRUE, na.action = na.omit)

d$V1[5] <- NA
d$V2[7] <- NA

prcomp(d, center = TRUE, scale = TRUE, na.action = na.omit)

我正在使用适用于Mac OS X的最新R版本2.15.1。

prcomp失败时,有人能看到原因吗?

这是我的新例子:

d <- data.frame(V1 = sample(1:100, 10), V2 = sample(1:100, 10))

result <- prcomp(d, center = TRUE, scale = TRUE, na.action = na.omit)

result$x

d$V1[5] <- NA

result <- prcomp(~V1+V2, data=d, center = TRUE, scale = TRUE, na.action = na.omit)

result$x

是否可以在PC1和PC2中保留第5行?在我的真实数据集中,我当然有两列以上的变量,只有一些变量丢失了,我不想丢失隐藏在其他值中的剩余信息!

2 个答案:

答案 0 :(得分:20)

是的,除非您使用na.action界面,否则formula被完全忽略似乎是一个“功能”(错误)。这是brought up before on the R Development list

我认为这应记录在案或标记为错误。

为了清楚起见,这会有效,因为它可以访问公式界面:

prcomp(~V1+V2, data=d, center = TRUE, scale = TRUE, na.action = na.omit)

答案 1 :(得分:18)

如果您不愿意使用公式界面,另一种解决方案是

prcomp(na.omit(d), center = TRUE, scale = TRUE)

包括将na.omit直接应用于数据框。