在FindCorrelation中需要R,TRUE / FALSE

时间:2016-03-11 18:59:50

标签: r r-caret

我在R中创建了一个简单的相关矩阵,我尝试使用插入符号进行特征选择,因此我可以删除高度相关的X属性。

这是我的代码:

highlyCorrelated <- findCorrelation(correlationMatrix, cutoff = 0.90, verbose = FALSE, names = TRUE, exact = ncol(correlationMatrix) < 100)
  • highlyCorrelated是新对象的名称
  • correlationMatrix是我的相关矩阵的名称

无论我如何将函数输入到R中,我都会收到以下错误。即使我只使用一个参数,我仍会收到此错误:

Error in if (x[i, j] > cutoff) { : missing value where TRUE/FALSE needed

有什么想法吗?

2 个答案:

答案 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})