将具有多个输出的函数应用于按tidyverse中的因子拆分的数据帧

将具有多个输出的函数应用于按tidyverse中的因子拆分的数据帧,r,dplyr,tidyverse,purrr,R,Dplyr,Tidyverse,Purrr,我有一个如下形式的数据框: y x1 x2 x3 factor ----------------------------------------------- numeric numeric numeric numeric factor_level_1 ... ... ... ... ... numeric numeric numeric numeric factor_level_2 ... ... ...

我有一个如下形式的数据框:

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
...     ...     ...     ...     ...
我正在尝试将
yhat
包中的
commonalityCoefficients
函数应用于我的数据帧的子集,按
因子进行分割

从文档中,
commonalityCoefficients
有参数:
commonalityCoefficients(dataMatrix,dv,ivlist,imat=FALSE)
带有
dataMatrix
数据框,以及
dv
ivlist
包含数据框中列标签的字符串。重要的是(我认为),它返回两个包含公共性分析结果的表

我想我可以使用循环,但我真的希望使用tidyverse方法来实现它。我尝试过各种组合,例如使用
split()
dplyr::group_by()对数据帧进行子集设置;并将函数应用于
purr::map()
purrr::walk()
系列函数,但我找不到有效的组合


我想问题是每个函数调用返回两个表,捕获每个表不是一件小事?非常感谢您的帮助。

这里有一个简单的方法:

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))
库(tidyverse)
图书馆(yhat)
df