如何从嵌套列表中的数据制作多密度图
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]]))
我会使用带有参数 .id
的 dplyr::bind_rows
将所有 data.frame
行绑定到一个 data.frame
中;然后使用 ggplot2
和 facet_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)
我有一个包含 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]]))
我会使用带有参数 .id
的 dplyr::bind_rows
将所有 data.frame
行绑定到一个 data.frame
中;然后使用 ggplot2
和 facet_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)