您可以使用 unnest() 整理数据,但为此需要将 pmap-call 分配给您的 df 中的一列(例如,在 mutate - call 内)。
library(tidyverse)
df <- df %>%
mutate(rnorm_data = pmap(list(n, mean, sd), rnorm)) %>%
group_by(mean_sd = interaction(mean, sd, sep = "_")) %>%
unnest()
df
# A tibble: 300 x 5
# Groups: mean_sd [3]
# mean sd n mean_sd rnorm_data
# <dbl> <dbl> <dbl> <fctr> <dbl>
# 1 5 3 100 5_3 4.737157
# 2 5 3 100 5_3 5.221150
# 3 5 3 100 5_3 3.855733
# 4 5 3 100 5_3 8.965053
# 5 5 3 100 5_3 2.608563
# 6 5 3 100 5_3 11.940414
# 7 5 3 100 5_3 8.213685
# 8 5 3 100 5_3 6.332804
# 9 5 3 100 5_3 6.233713
# 10 5 3 100 5_3 4.758685
# # ... with 290 more rows
我添加了group_by 以供稍后在ggplot-调用中引用并总结以下数据:
df_summarized <- df %>%
summarize(median = median(rnorm_data),
quart1st = quantile(rnorm_data, 0.25),
quart3rd = quantile(rnorm_data, 0.75)) %>%
gather(stat, value, median:quart3rd)
通过使用gather,我可以有不同的linetypes 用于不同的汇总统计信息。
ggplot(df, aes(rnorm_data, fill = mean_sd, color = mean_sd)) +
geom_histogram() +
geom_vline(data = df_summarized,
aes(xintercept = value, linetype = stat, color = mean_sd))