在 lapply 中提取列出的数据框名称

Extract listed data frame names inside lapply

我正在根据数据框列表创建绘图列表,并尝试为每个绘图添加一个标题,该标题对应于列表中数据框的名称。 在 lapply 之外,如果我调用 paste0(names(df.list)[x]) 它 returns 感兴趣的数据框的名称。

当我尝试在 lapply

中添加它时

df.plots<-lapply(df.list, function(x) p<-ggplot(x,aes(x=Numbers,y=Signal)) + geom_point() + ggtitle(paste0(names(df.list)[x])) )

我收到以下错误:

Error in names(df.list)[x] : invalid subscript type 'list'

是否有另一种方法可以提取数据框名称,以便将它们添加到绘图中?

这失败了,因为 x 的值是列表 df.list 的一个元素,这不是您可以用来索引名称向量的东西。

您可以在索引向量上尝试 lapply,这在 aosmith 链接的问题 (Access lapply index names inside FUN)

中有解释
lapply(seq_along(df.list), function(i) {
    ggplot(df_list[[i]], aes(x=Numbers, y=Signal)) + 
      geom_point() + 
      ggtitle(names(df.list)[i])
}

(此外,与您的问题没有直接关系,但如果您只传递一个值,调用 paste0 不会执行任何操作,因此您可以放弃它)

您可以使用 purrr 中的 map2 同时循环遍历列表和列表的名称,每次创建一个绘图。在 map2 中,.x 指的是第一个列表,.y 指的是第二个列表,您可以在绘图代码中使用它。

library(purrr)
map2(dlist, names(dlist), 
    ~ggplot(.x, aes(Numbers, Signal)) +
        geom_point() +
        ggtitle(.y))