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

У меня есть фрейм данных в форме:

y       x1      x2      x3      factor
-----------------------------------------------
numeric numeric numeric numeric factor_level_1
...     ...     ...     ...     ...
numeric numeric numeric numeric factor_level_2
...     ...     ...     ...     ...
numeric numeric numeric numeric factor_level_3
...     ...     ...     ...     ...

Я пытаюсь применить функцию commonalityCoefficients из пакета yhat к подмножествам моего фрейма данных, разделенную на factor.

Из документов commonalityCoefficients имеет аргументы: commonalityCoefficients(dataMatrix, dv, ivlist, imat=FALSE) с dataMatrix фреймом данных и dv и ivlist строки, содержащие метки столбцов из фрейма данных. Важно (я думаю), возвращает две таблицы , которые содержат результаты анализа общности.

Полагаю, я мог бы использовать al oop, но я действительно хотел бы использовать метод tidyverse сделать это. Я пробовал различные комбинации, такие как подмножество кадра данных с split() или dplyr::group_by(); и применение функции с функциями семейства purrr::map() и purrr::walk(), но я не могу найти комбинацию, которая работает.

Я полагаю, проблема в том, что каждый вызов функции возвращает две таблицы, а захват не является тривиальным каждая из этих таблиц? Любая помощь очень ценится.

1 Ответ

0 голосов
/ 08 марта 2020

Вот обратный путь:

library(tidyverse)
library(yhat)
df <- data.frame(y = rnorm(50),
                 x1 = runif(50),
                 x2 = runif(50),
                 x3 = runif(50),
                 ff1 = gl(n = 5, k = 10, length = 50, labels = LETTERS[1:5]))

ivlst <- as.list(setdiff(names(df), c("y", "ff1")))

results <-
  df %>%
  group_by(ff1) %>%
  group_map( ~ commonalityCoefficients(., dv = "y", ivlist = ivlst))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...