如何从嵌套列表中的数据制作多密度图

How can I make multiple density plots from data inside a nested list

我有一个包含 15 个数据集(也是列表)的嵌套列表,每个数据集有 3 列,但行数可变(每行数以千计)。最后一个数据集的顶部在控制台中如下所示:

[[15]]
           Object.Number            Internal                      Membrane
1                0                 8.275335e+03                   2575.41042
2                2                 1.225267e+04                   5813.50000
3                3                 9.554725e+03                   2483.51172

我想制作一个 5x3 的密度图网格,使用 15 个数据集的每一个的第二列中的值创建。

我想我可以用 lapply (myFiles, densityplot(args)) 做到这一点,但我找不到在 densityplot 的参数中引用该列的方法。

对于如何实现这一目标的任何见解,我们将不胜感激。

purrr 中,您可以使用 shorthand 符号使用 ~.x,例如:

library(purrr)
map(myFiles, ~ densityplot(.x[[2]]))

我会使用带有参数 .iddplyr::bind_rows 将所有 data.frame 行绑定到一个 data.frame 中;然后使用 ggplot2facet_wrap 在 3x5 网格布局中绘制密度。

这是一个使用 mtcars 示例数据的示例:

# Create sample data
lst <- replicate(15, mtcars, simplify = F)

# Plot
library(tidyverse)
bind_rows(lst, .id = "id") %>%
    mutate(id = factor(id, levels = as.character(1:15))) %>%
    ggplot(aes(mpg)) +
    geom_density() +
    facet_wrap(~ id, nrow = 3, ncol = 5)