Построить несколько фреймов данных с lapply в R - PullRequest
0 голосов
/ 04 февраля 2020

Я пытаюсь построить несколько фреймов данных (один график на фрейм данных) с функцией 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

1 Ответ

2 голосов
/ 04 февраля 2020

Попробуйте составить список ваших фреймов данных. Ваша make_hist функция была настроена для обработки одного data.frame. Тогда lapply может применить make_hist к каждому элементу списка.

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

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