Невозможно передать дополнительные аргументы в group_map - PullRequest
1 голос
/ 18 апреля 2020

Я не могу передать дополнительные аргументы в group_map. Следующий код возвращает ошибку

"Ошибка в (функция (data, sumFirst): неиспользуемый аргумент (точки [[2]] [[1]])"

library(dplyr)

data(mtcars)

myFunction2 <- function(data, sumFirst) {
  sumFirst
}

by_carb <- mtcars %>% group_by(carb)

group_map(by_carb, myFunction2, sumFirst=2)

Я видел эту ветку в топи c, которая заставляет меня думать, что я могу быть знакомой проблемой https://github.com/tidyverse/dplyr/issues/4509

Есть ли какая-нибудь работа вокруг?

1 Ответ

2 голосов
/ 18 апреля 2020

Я не совсем уверен, что вам нужно, но вы можете заставить group_map работать следующим образом:

library(dplyr)
data(mtcars)
myFunction2 <- function(data, sumFirst) {
  sumFirst
}
mtcars %>% group_by(carb) %>% group_map(~myFunction2(.x,2))

Хорошо, основываясь на моих ограниченных знаниях о недостаточной работе group_map, в виньетке написано:

Если функция , она используется как есть. У него должно быть как минимум 2 формальных аргумента.

Если я правильно прочитал исходный код , поэтому первый аргумент - это данные, а второй - ключи, то есть магистраль чтобы заставить его работать, используя другую функцию (чтобы мы могли видеть, что она действительно работает):

group_map(by_carb,.f=function(data,keys)colMeans(data))

Теперь, если вы хотите передать пользовательскую функцию, тогда это будет:

group_map(by_carb,.f=function(data,keys,func)func(data),func=colMeans)

И вы можете проверить результаты, которые я не буду печатать здесь. Это так же, как если бы мы делали, что легче написать (я думаю):

group_map(by_carb,~colSums(.x))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...