mutate和mutate_之间的区别

时间:2018-06-18 18:22:50

标签: r dplyr mutate

我正在学习如何使用本文处理不平衡数据: https://www.r-bloggers.com/dealing-with-unbalanced-data-in-machine-learning/

Mutate是一种用“dplyr”中的新值替换原始NA值的简单方法。

以下代码出错了:

    models <- list(original = model_rf,
                       under = model_rf_under,
                       over = model_rf_over,
                       smote = model_rf_smote,
                       rose = model_rf_rose)
    comparison <- data.frame(model = names(models),
                         Sensitivity = rep(NA, length(models)),
                         Specificity = rep(NA, length(models)),
                         Precision = rep(NA, length(models)),
                         Recall = rep(NA, length(models)),
                         F1 = rep(NA, length(models)))

    for (name in names(models)) {
  model <- get(paste0("cm_", name))

  comparison[comparison$model == name, ] <- filter(comparison, model == name) %>%
    mutate(Sensitivity = model$byClass["Sensitivity"],
           Specificity = model$byClass["Specificity"],
           Precision = model$byClass["Precision"],
           Recall = model$byClass["Recall"],
           F1 = model$byClass["F1"])
}

然而,当我运行它时,我总是得到错误:$ operator对原子向量无效。 我仔细检查代码,我发现问题可能来自函数“mutate”。我尝试使用mutate_,它有效。

但我不知道为什么会这样。我很想知道mutate()和mutate_()之间的区别谢谢!

1 个答案:

答案 0 :(得分:0)

我无法对此进行测试,因为我没有任何数据,因此可能存在一些错误。但是,你应该试试这个:

.parent

这完全取代了for循环。