Arhn - архитектура программирования

Подготовка данных с помощью dplyr дает: NA введены принудительно

Я слежу за книгой по построению деревьев решений и подумал, что могу сделать часть кода немного красивее. Это код, о котором идет речь:

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

Когда я пытаюсь сделать сводку tree.carseats, выдает ошибку с измененным кодом:

Error in y - frame$yval[object$where] : 
  non-numeric argument to binary operator

Что не так с моим мыслительным процессом здесь?

19.03.2020

Ответы:


1

Не уверен, откуда возникла проблема, но она решена, если вы вызываете factor в результате if_else...

В общем, не рекомендуется attach данные напрямую, это может привести к непредсказуемому поведению.

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)
19.03.2020
  • Плохая практика была в книжном примере. Я в курсе. :) 19.03.2020
  • Да, такое случается часто, R постоянно развивается, и то, что считалось нормальным несколько лет назад, сегодня может считаться не таким уж хорошим... 19.03.2020
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..