Передать вывод канала напрямую в функцию карты мурлыканья - PullRequest
0 голосов
/ 09 марта 2020

Этот вопрос соответствует моему предыдущему вопросу здесь . Однако я пытаюсь объединить вывод вызова канала с функцией отображения purrr в один конвейер. Например:

library(tidyverse)
library(purrr)

my_tbl <- tibble(a = rep(c(0, 1), each = 5),
             b = rep(c(0, 1), times = 5),
             c = runif(10),
             d = rexp(10)) %>%
    mutate_at(vars(1,2), as.factor)

map(names(my_tbl)[-1], ~glm(reformulate(.x, "a"), data = my_tbl, family = "binomial")) %>% summary()

Я пробовал с

my_tbl <- tibble(a = rep(c(0, 1), each = 5),
             b = rep(c(0, 1), times = 5),
             c = runif(10),
             d = rexp(10)) %>%
    mutate_at(vars(1,2), as.factor) %>%
    {map(names(.)[-1], ~glm(reformulate(.x, "a"), data = ., family = "binomial")) %>% summary()}

, но получил:

Error in eval(predvars, data, env) : 
  invalid 'envir' argument of type 'character'

1 Ответ

1 голос
/ 09 марта 2020

В этом случае вам не нужен purrr:

custom_fun <- function(x) {
  glm(reformulate(names(x)[-1], "a"), data = x, family = "binomial") %>% 
    summary
}

my_tbl <- tibble(a = rep(c(0, 1), each = 5),
                 b = rep(c(0, 1), times = 5),
                 c = runif(10),
                 d = rexp(10)) %>%
  mutate_at(vars(1,2), as.factor) %>% 
  custom_fun()

Вы можете использовать purrr со следующими параметрами:

my_tbl <- tibble(a = rep(c(0, 1), each = 5),
                 b = rep(c(0, 1), times = 5),
                 c = runif(10),
                 d = rexp(10)) %>%
  mutate_at(vars(1,2), as.factor) %>% 
  nest(data = everything()) %>% 
  mutate(res = map(data, custom_fun))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...