我正在尝试使用ggplot为包含在名为“ list1”的列表中的20个数据帧(“ df1”-“ df20”)创建图。列表如下所示:
list1 <- list(df1, df2, ..., df20)
每个数据框都有两列,我想相互绘制z和y:
df1
z y
1 6
2 9
3 7
我创建了以下代码,该代码也可以使用,但是没有为绘图提供从df1到df20的相应标题:
lapply(list1, function(x)
ggplot(data = list1$x) +
geom_line(mapping = aes(x = x$z,
y = x$y)))
我尝试将所有名称放入向量中,并将该向量包含在如下代码中:
titlenames <- c(df1, df2, ..., df20)
+ ggtitle(titlenames)
但这仅提供所有图的名字。
感谢您的帮助,因为我对R还是很陌生。
答案 0 :(得分:1)
您可以尝试使用mapply
(类似于lapply
,但首先使用该函数,并且可以遍历多个等长列表/向量),并使用数据列表和名称的向量:
mapply(function(df, titlename) {
ggplot(data = df) +
geom_line(mapping = aes(x = z, y = y)) +
ggtitle(titlename)
}, list1, titlenames)
我发现,由于mapply
的格式与lapply
不同,因此很难记住。软件包purrr
提供了我认为更干净的替代方法:
purrr::map2(list1, titlenames, function(df, titlename) {
ggplot(data = df) +
geom_line(mapping = aes(x = z, y = y)) +
ggtitle(titlename)
})