[英]Apply a function with multiple outputs to dataframe that is split by factors in the tidyverse
我有一個如下形式的數據框:
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
從數據幀包含列標簽的字符串。 重要的是(我認為),它返回兩個包含共性分析結果的表。
我想我可以使用循環,但我真的很想使用 tidyverse 方法來做到這一點。 我嘗試了各種組合,例如使用split()
或dplyr::group_by()
對數據幀進行子集化; 並使用purrr::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))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.