R: Экспорт вложенного списка фреймов данных

Я создал вложенный список фреймов данных, используя функцию tabyl в janitory и lapply. Поскольку функция tabyl с тремя переменными возвращает список фреймов данных, использование результатов lapply во вложенном списке. В этом случае я смотрю на различные переменные по демократическим показателям и регионам. Результат выглядит примерно так:

    $ Freedom of Expression
    ..$ Africa (tabyl)
    ..$ Asia (tabyl)
    ..$ Europe (tabyl)
    $ Freedom of Movement
    ..$ Africa (tabyl)
    ..$ Asia (tabyl)
    ..$ Europe (tabyl)

С каждым регионом, имеющим фрейм данных, который выглядит следующим образом:

regime      High Freedom of Expression  Low Freedom of Expression   Mid-Range Freedom of Expression     Total
Democracy   100.0% (1)          0.0% (0)            70.0% (21)              44.9% (22)
Hybrid Regime   0.0% (0)            38.9%(7)            30.0%  (9)              32.7% (16)
Non-Democratic Regime 0.0% (0)          61.1% (11)              0.0%  (0)               22.4% (11)

Я хотел бы экспортировать это в.csv или текстовый файл, чтобы поделиться с людьми, которые не знают, как использовать R.

Я попытался использовать функцию flatten из purrr, однако это приводит к списку регионов, но с перекрестными таблицами только из одной из переменных. Я также использовал list.flatten из пакета rlist, но в итоге он возвращает каждую строку фрейма данных как отдельный элемент в списке.

Благодарен за любые предложения.

1 ответ

Решение

Первый map(bind_rows) (на глубине 1), а затем второй bind_rows

library(tidyverse)
library(janitor)
#> 
#> Attaching package: 'janitor'
#> The following objects are masked from 'package:stats':
#> 
#>     chisq.test, fisher.test

lapply(
  replicate(2, mtcars, simplify = FALSE),
  tabyl, cyl, gear, am
) %>% 
  map(bind_rows, .id = "region") %>% 
  bind_rows(.id = "freedom_of")
#>  freedom_of region cyl  3 4 5
#>           1      0   4  1 2 0
#>           1      0   6  2 2 0
#>           1      0   8 12 0 0
#>           1      1   4  0 6 2
#>           1      1   6  0 2 1
#>           1      1   8  0 0 2
#>           2      0   4  1 2 0
#>           2      0   6  2 2 0
#>           2      0   8 12 0 0
#>           2      1   4  0 6 2
#>           2      1   6  0 2 1
#>           2      1   8  0 0 2

Создано 2019-04-30 пакетом представлением (v0.2.1)

Другие вопросы по тегам