我在R中创建了一个简单的相关矩阵,我尝试使用插入符号进行特征选择,因此我可以删除高度相关的X属性。
这是我的代码:
highlyCorrelated <- findCorrelation(correlationMatrix, cutoff = 0.90, verbose = FALSE, names = TRUE, exact = ncol(correlationMatrix) < 100)
无论我如何将函数输入到R中,我都会收到以下错误。即使我只使用一个参数,我仍会收到此错误:
Error in if (x[i, j] > cutoff) { : missing value where TRUE/FALSE needed
有什么想法吗?
答案 0 :(得分:2)
我有同样的问题,@ user20650答案是正确的。 我总是做同样的“预处理”以确保finCorrelation有效:
nums <- sapply(data, is.numeric)
data.numeric <- data[ , nums]
data.without_na <- na.omit(data.numeric)
cor_matrix <- cor(data.without_na)
findCorrelation(cor_matrix, 0.7)
答案 1 :(得分:0)
我有同样的问题。就我而言,问题是数据中的无限值,use='complete.obs'
在cor()中没有考虑。
通过使用
预处理数据来解决data <- apply(data, 2, function(y) {y[!is.finite(y)]=NA; y})