簡體   English   中英

將具有多個輸出的函數應用於按 tidyverse 中的因子拆分的數據幀

[英]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一個數據幀,和dvivlist從數據幀包含列標簽的字符串。 重要的是(我認為),它返回兩個包含共性分析結果的

我想我可以使用循環,但我真的很想使用 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM