R:导出数据框的嵌套列表
R: Exporting nested list of dataframes
我在 janitory 和 lapply 中使用 tabyl 函数创建了一个嵌套的数据框列表。作为具有三个变量 returns 数据帧列表的 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 的人共享。
我曾尝试使用 purrr 中的 flatten 函数,但这会生成一个区域列表,但交叉表仅来自一个变量。我还使用了 rlist 包中的 list.flatten,但它最终将数据框的每一行作为列表中的单独元素返回。
感谢任何建议。
第一个 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
由 reprex package (v0.2.1)
于 2019-04-30 创建
我在 janitory 和 lapply 中使用 tabyl 函数创建了一个嵌套的数据框列表。作为具有三个变量 returns 数据帧列表的 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 的人共享。
我曾尝试使用 purrr 中的 flatten 函数,但这会生成一个区域列表,但交叉表仅来自一个变量。我还使用了 rlist 包中的 list.flatten,但它最终将数据框的每一行作为列表中的单独元素返回。
感谢任何建议。
第一个 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
由 reprex package (v0.2.1)
于 2019-04-30 创建