R purrr从列表中提取多个项目并转换为数据框

时间:2017-12-11 09:48:28

标签: r purrr

我目前在R中学习purrr。我的代码执行以下操作

  • 使用r中的pysch包从问题列表中获取平均值,标准差,范围等
  • 在单个数据框中返回这些统计信息,其中列表项作为列添加到表中。在其学校下面的案例中。

以下是我认为我约90%的例子。我想要做的就是将学校的名称作为列添加到数据框中,以便能够在之后绘制它们。有人可以帮忙吗?一旦bind_rows()命令运行

,下面的方法就会丢失名称
library(lavaan)
library(tidyverse)

# function pulls the mean, sd, range, kurtosis and skew
get_stats <- function(x){

  row_names <- rownames(x)
  mydf_temp <- x %>% 
    dplyr::select(mean, sd, range, kurtosis, skew) %>% 
    mutate_if(is.numeric, round, digits=2) %>% 
    filter(complete.cases(.))

  mydf_temp
}

# Generate the data for the reproducible example
mydf <- HolzingerSwineford1939 %>% 
  select(school, starts_with("x")) %>% 
  psych::describeBy(., group=.$school, digits = 2) 


# Gets the summary statistics per school
stats_summ <- mydf %>% 
  map(get_stats) %>% 
  bind_rows()

1 个答案:

答案 0 :(得分:1)

我们可以使用.id

中的bind_rows参数
mydf %>%
     map(get_stats) %>%
     bind_rows(., .id = 'group')

使用iris数据集

的可重现示例
mydf <- iris %>%   
           psych::describeBy(., group=.$Species, digits = 2)