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

R 如何从嵌套列表中的数据绘制多个密度图,r,nested-lists,lattice,density-plot,R,Nested Lists,Lattice,Density Plot,我有一个嵌套列表,其中包含15个数据集(也包括列表),每个数据集有3列,但行数可变(每行数千行)。最后一个数据集的顶部在控制台中如下所示: [[15]] Object.Number Internal Membrane 1 0 8.275335e+03 2575.41042 2 2

我有一个嵌套列表,其中包含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个数据集中第2列中的值创建

我想我可以用
lappy(myFiles,densityplot(args))
实现这一点,但是我找不到一种方法来引用
densityplot
参数中的列


如果您对如何实现这一点有任何见解,我们将不胜感激。

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

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

我将使用带有参数
.id
dplyr::bind_rows
将所有
数据.frame
s行绑定到单个
数据.frame
;然后使用
ggplot2
facet\u 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)
#创建示例数据
lst%
变异(id=因子(id,级别=字符(1:15))%>%
ggplot(aes(mpg))+
几何密度()+
面包(~id,nrow=3,ncol=5)

这很有趣。我一点也不知道purr,但我一定会调查的。这似乎是一种非常有效的方法。是的,使用
.x
~
的语法既短又方便。但是,它与在
lappy
map
中定义函数没有区别。所以
map(myFiles,~densityplot(.x[[2]])
map(myFiles,function(x)densityplot(x[[2]])
相同。后者又相当于
lappy(myFiles,function(x)densityplot(x[[2]])
。您可以查看
map
lappy