#r #tidyverse #dplyr #lm
Вопрос:
Я видел статью в «К науке о данных» о классной технике для запуска нескольких линейных регрессий с использованием функций из пакетов dplyr и broom с фреймом данных, состоящим из формул модели. Я попробовал это сначала с моими собственными данными, но безрезультатно, поэтому я скопировал пример прямо из поста и получил ту же ошибку! Вы можете посмотреть сообщение здесь: https://towardsdatascience.com/five-things-you-never-knew-you-could-do-with-dplyr-1b634c0ea745
Вот код из поста с использованием набора данных mtcars пакета cars.
# create a column with model formulas to test
models <- data.frame(
formula = c(
"mpg ~ cyl",
"mpg ~ cyl disp",
"mpg ~ cyl disp hp",
"mpg ~ cyl disp hp drat"
)
)
# run them all and get fit statistics
models %>%
dplyr::rowwise() %>%
dplyr::mutate(
broom::glance(lm(formula, mtcars))
)
Ошибка, которую я получаю, заключается в:
Error: Problem with `mutate()` input `..1`.
x invalid formula
ℹ Input `..1` is `broom::glance(lm(formula, mtcars))`.
ℹ The error occured in row 1.
Run `rlang::last_error()` to see where the error occurred.
> rlang::last_error()
<error/dplyr_error>
Problem with `mutate()` input `..1`.
x invalid formula
ℹ Input `..1` is `broom::glance(lm(formula, mtcars))`.
ℹ The error occured in row 1.
Backtrace:
1. dplyr::rowwise(.)
9. dplyr::mutate(., broom::glance(lm(formula, mtcars)))
11. dplyr:::mutate_cols(.data, ...)
Я прекрасно вижу модель в кадре данных. И я также могу просматривать данные по строкам (). Я попытался перезапустить сеанс R и загрузить только пакеты dplyr, broom и cars, чтобы проверить, нет ли проблем с маскировкой (которых не должно быть, так как я все равно вызываю функции напрямую…).
Я попытался использовать mutate_at(), потому что я знаю, что отправка строк через функции иногда может быть проблематичной в tidyverse, и я получил эту ошибку:
> # run them all and get fit statistics
> models %>%
dplyr::rowwise() %>%
dplyr::mutate_at(
broom::glance(lm(formula, mtcars))
)
Error: object of type 'closure' is not subsettable
Единственная проблема связана с мутацией, но, похоже, она работает просто отлично, поскольку она закодирована здесь для автора статьи.
Любые идеи о том, что происходит, будут высоко оценены!
РЕДАКТИРОВАТЬ: Версия RStudio 1.4 Версии пакетов: dplyr — 1.0.5, tidyverse — 1.3.0, метла — 0.7.5
Комментарии:
1. Пожалуйста, проверьте
packageVersion('dplyr')
, работает ли это для меня с 1.0.4. Может быть, в вашем коде, завернитеbroom::glance(lm(formula, mtcars)
вlist
2. @IRTFM ты не можешь? Я использую Rstudio 1.4, у меня версия dplyr 1.0.5, но все остальные упомянутые версии пакетов одинаковы. Я попытался обернуть список, и я все еще получаю ту же ошибку
3. Мое прочтение описания пакета tidyverse 1.3.0 состоит в том, что в нем есть гораздо более поздняя версия dplyr. cran.r-project.org/web/packages/tidyverse/index.html