Welcome @IndrajeetPatil! You can check out this FAQ post for the policy on cross-posting FAQ: Is it OK if I cross-post? Basically, it is not encouraged, but not outright disallowed. Given that you don't have any answers on SO and you link to the question, I think it is okay in this case. But I would actually post the text of the original question here as well as the link to SO so others don't have to go to SO to read the question.
As to your question, one solution I came up with is to feed a named list into pmap()
so that the ouput list elements are named with those same names. Instead of manually naming the input list (because you said your real list may have large number of elements), I use llist()
from Hmisc
to create the named list from original object names.
From the llist()
documentation:
llist
is like list
except that it preserves the names or labels of the component variables in the variables label
attribute. This can be useful when looping over variables or using sapply
or lapply
. By using llist
instead of list
one can annotate the output with the current variable's name or label. llist
also defines a names
attribute for the list and pulls the names
from the arguments' expressions for non-named arguments.
I think this achieves your goal without requiring doubling typing of list names:
# setup
library(tidyverse)
library(groupedstats)
set.seed(123)
# creating the dataframes
data_1 <- tibble::as.tibble(iris)
data_2 <- tibble::as.tibble(mtcars)
data_3 <- tibble::as.tibble(airquality)
# creating a list
purrr::pmap(
.l = list(
data = Hmisc::llist(data_1, data_2, data_3),
grouping.vars = alist(Species, c(am, cyl), Month),
measures = alist(c(Sepal.Length, Sepal.Width), wt, c(Ozone, Solar.R, Wind))
),
.f = groupedstats::grouped_summary
)
#> $data_1
#> # A tibble: 6 x 16
#> Species type variable missing complete n mean sd min p25
#> <fct> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 setosa numeā¦ Sepal.Lā¦ 0 50 50 5.01 0.35 4.3 4.8
#> 2 setosa numeā¦ Sepal.Wā¦ 0 50 50 3.43 0.38 2.3 3.2
#> 3 versicā¦ numeā¦ Sepal.Lā¦ 0 50 50 5.94 0.52 4.9 5.6
#> 4 versicā¦ numeā¦ Sepal.Wā¦ 0 50 50 2.77 0.31 2 2.52
#> 5 virginā¦ numeā¦ Sepal.Lā¦ 0 50 50 6.59 0.64 4.9 6.23
#> 6 virginā¦ numeā¦ Sepal.Wā¦ 0 50 50 2.97 0.32 2.2 2.8
#> # ā¦ with 6 more variables: median <dbl>, p75 <dbl>, max <dbl>,
#> # std.error <dbl>, mean.low.conf <dbl>, mean.high.conf <dbl>
#>
#> $data_2
#> # A tibble: 6 x 17
#> am cyl type variable missing complete n mean sd min p25
#> <dbl> <dbl> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 1 6 numeā¦ wt 0 3 3 2.75 0.13 2.62 2.7
#> 2 1 4 numeā¦ wt 0 8 8 2.04 0.41 1.51 1.78
#> 3 0 6 numeā¦ wt 0 4 4 3.39 0.12 3.21 3.38
#> 4 0 8 numeā¦ wt 0 12 12 4.1 0.77 3.44 3.56
#> 5 0 4 numeā¦ wt 0 3 3 2.94 0.41 2.46 2.81
#> 6 1 8 numeā¦ wt 0 2 2 3.37 0.28 3.17 3.27
#> # ā¦ with 6 more variables: median <dbl>, p75 <dbl>, max <dbl>,
#> # std.error <dbl>, mean.low.conf <dbl>, mean.high.conf <dbl>
#>
#> $data_3
#> # A tibble: 15 x 16
#> Month type variable missing complete n mean sd min p25
#> <int> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 5 inteā¦ Ozone 5 26 31 23.6 22.2 1 11
#> 2 5 inteā¦ Solar.R 4 27 31 181. 115. 8 72
#> 3 5 numeā¦ Wind 0 31 31 11.6 3.53 5.7 8.9
#> 4 6 inteā¦ Ozone 21 9 30 29.4 18.2 12 20
#> 5 6 inteā¦ Solar.R 0 30 30 190. 92.9 31 127
#> 6 6 numeā¦ Wind 0 30 30 10.3 3.77 1.7 8
#> 7 7 inteā¦ Ozone 5 26 31 59.1 31.6 7 36.2
#> 8 7 inteā¦ Solar.R 0 31 31 216. 80.6 7 175
#> 9 7 numeā¦ Wind 0 31 31 8.94 3.04 4.1 6.9
#> 10 8 inteā¦ Ozone 5 26 31 60.0 39.7 9 28.8
#> 11 8 inteā¦ Solar.R 3 28 31 172. 76.8 24 107
#> 12 8 numeā¦ Wind 0 31 31 8.79 3.23 2.3 6.6
#> 13 9 inteā¦ Ozone 1 29 30 31.4 24.1 7 16
#> 14 9 inteā¦ Solar.R 0 30 30 167. 79.1 14 117.
#> 15 9 numeā¦ Wind 0 30 30 10.2 3.46 2.8 7.55
#> # ā¦ with 6 more variables: median <dbl>, p75 <dbl>, max <dbl>,
#> # std.error <dbl>, mean.low.conf <dbl>, mean.high.conf <dbl>
Created on 2018-11-01 by the reprex package (v0.2.1)