将具有多个输出的函数应用于按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