在 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))
我正在根据数据框列表创建绘图列表,并尝试为每个绘图添加一个标题,该标题对应于列表中数据框的名称。
在 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))