用R中的lapply绘制多个数据帧

问题描述 投票:0回答:1

我正在尝试使用lapply函数绘制多个数据框(每个数据框一个图),但是尽管该主题的所有文章我都找不到答案,因为我不断遇到错误:图的输出列表为空。] >

我的数据的结构如下:

df1 <- mtcars %>% group_by(cyl) %>% tally()
colnames(df1) <- c('var', 'n')
df2 <- mtcars %>% group_by(gear) %>% tally()
colnames(df2) <- c('var', 'n')
dfList <- list(df1, df2)

dfList
[[1]]
# A tibble: 3 x 2
    var     n
  <dbl> <int>
1     4    11
2     6     7
3     8    14

[[2]]
# A tibble: 3 x 2
   var     n
  <dbl> <int>
1     3    15
2     4    12
3     5     5

我尝试过:

make_hist <- function(xvar){
     ggplot(dfList, aes_(x = ~var, y = as.name(xvar))) +
     geom_col() }

plots <- lapply(names(dfList), make_hist)

plots
list()

plots[1]
[[1]]
NULL

[我正在尝试使用lapply函数绘制多个数据框(每个数据框一个图),但是尽管该主题的所有文章我都找不到答案,因为我不断遇到错误:输出列表...

r ggplot2 lapply
1个回答
0
投票

尝试使用此方法绘制数据框列表:

df1 <- mtcars %>% group_by(cyl) %>% tally()
colnames(df1) <- c('var', 'n')
df2 <- mtcars %>% group_by(gear) %>% tally()
colnames(df2) <- c('var', 'n')
colnames(df2) <- c('var', 'n')
dfList <- list(df1, df2)

make_hist <- function(df){
  ggplot(df, aes(x = var, y = n)) +
    geom_col() }

plots <- lapply(dfList, make_hist)
© www.soinside.com 2019 - 2024. All rights reserved.