1) Поскольку вы в явном виде выписываете все переменные в select
, вы можете так же легко записать их в формулу и избавиться от select
- вы можетеоставьте select
, если хотите, но это кажется бессмысленным, если переменные уже явно указаны в формуле.Тогда это работает:
library(dplyr)
library(magrittr)
library(pscl)
library(ISLR)
fitted <- Default %$% glm(default ~ income, family=binomial)
fitted %>% pR2
2) Другая возможность состоит в том, чтобы инвертировать его так, чтобы вместо помещения glm
внутрь трубы поместить трубу внутри glm
:
fitted <-
glm(default ~ ., data = Default %>% select(income, default), family = binomial)
fitted %>% pR2
3) Третий подход заключается в создании аргумента formula
для glm
вместо аргумента data
.
fitted <- Default %>%
select(starts_with("inc")) %>%
names %>%
reformulate("default") %>%
glm(data = Default, family = binomial)
fitted %>% pR2
Замените glm
Строка с этим, если важно, чтобы строка Call:
в выводе выглядела хорошо.
{ do.call("glm", list(., data = quote(Default), family = quote(binomial))) }
или использование purrr:
{ invoke("glm", list(., data = expr(Default), family = expr(binomial))) }