【问题标题】:R, TRUE/FALSE needed in FindCorrelationFindCorrelation 中需要 R,TRUE/FALSE
【发布时间】:2020-05-13 15:47:49
【问题描述】:

我在 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

有什么想法吗?

【问题讨论】:

  • 打印出错后i和j的值,检查x[i,j]的值。
  • i 和 j 都不是对象,在尝试打印时找不到
  • 你的相关矩阵有缺失值吗?
  • 不,它没有缺失值
  • @user20650 是正确的 - 我的矩阵中有 NA 值。谢谢!

标签: r r-caret


【解决方案1】:

我遇到了同样的问题,@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)

【讨论】:

    【解决方案2】:

    我遇到了同样的问题。在我的情况下,问题是,我的数据中的无限值,use='complete.obs' 在 cor() 中没有考虑。

    通过用

    预处理数据解决了这个问题
    data <- apply(data, 2, function(y) {y[!is.finite(y)]=NA; y})
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-28
      • 2018-07-12
      • 2014-06-06
      • 1970-01-01
      • 2015-01-17
      • 2016-11-06
      • 1970-01-01
      相关资源
      最近更新 更多