我正在阅读一本关于构建决策树的书,我想我可以让一段代码更漂亮一些。下面是有问题的代码:
library(tree)
library(ISLR)
library(dplyr)
attach(Carseats)
High=ifelse(Sales <=8,"No","Yes ")
Carseats =data.frame(Carseats ,High)
tree.carseats <- tree(High~ . -Sales, Carseats)
代码的作用是在创建树结构之前将列添加到Carseats数据框中。
我认为读起来更漂亮的代码是:
library(tree)
library(ISLR)
library(dplyr)
Carseats <- Carseats %>% mutate(High = ifelse(Sales <= 8, "No", "Yes"))
tree.carseats <- tree(High~ . -Sales, Carseats)
但是,尝试使用修改后的代码运行最后一行时会给出警告:
Warning message:
In tree(High ~ . - Sales, Carseats) : NAs introduced by coercion
当我尝试对
修改后的代码会抛出错误:
Error in y - frame$yval[object$where] :
non-numeric argument to binary operator
我的思考过程出了什么问题?
发布于 2020-03-19 19:15:36
不确定问题是从哪里产生的,但如果调用
的结果
..。
通常,不建议使用
直接访问数据,这可能会导致不可预知的行为。
library(tree)
library(ISLR)
library(dplyr)
data("Carseats")
Carseats <- Carseats %>% mutate(High = factor(if_else(Sales <= 8, "No", "Yes")))
tree.carseats <- tree(High~ . -Sales, data = Carseats)
https://stackoverflow.com/questions/60755493
复制相似问题