使用 Purrr::map 生成多个 htmlTable 的函数
Function to Generate Multiple htmlTables using Purrr::map
library(htmlTable)
library(tidyverse)
library(ggmosaic) for "happy" dataset
我想创建一个函数,为数据集中的所有分类变量创建频率表,然后为每个分类变量生成 htmlTables。但是,通过使用 purrr::map,表位于列表中。如何使用 htmlTable 生成表格?或者生成类似表格以供发布的任何更好的包?我想我需要拆分列表或使用额外的 purrr::map 功能?帮助将不胜感激...
Something like this...
FUN<-function(data){
TAB<-happy%>%select_if(is.factor)%>%
map(table)
TABLES<-htmlTable(TAB)
return(TABLES)
}
这是一个解决方案,它使用 tibble
来存储函数的参数以及生成的 HTML 字符串:
编辑: 添加了新列(百分比)
library(ggmosaic)
library(purrr)
library(tidyverse)
library(htmlTable)
library(magrittr)
library(scales)
data(happy)
# Use a subset of `happy` for the example
h <- happy %>% as_tibble %>% sample_n(100)
# create the function
make_html_table <- function(data, .name, .col_names) {
data %>%
table %>%
as.data.frame %>%
set_colnames(.col_names) %>%
as.data.frame %>%
mutate(percent = scales::percent(count/sum(count))) %>% # add the percent column
htmlTable(caption = .name)
}
# Apply the function and store the results in a tibble
tbl <-
h %>%
select_if(is.factor) %>%
{ tibble(NAME = names(.),
data = map(., ~.x)) } %>%
mutate(TABLE = map2(.x = data,
.y = NAME,
.f = make_html_table,
.col_names = c("levels", "count")))
# Check out the tables in the Viewer Pane (if you're using RStudio)
tbl %>% extract2("TABLE") %>% map(htmlTableWidget)
#> $happy
#>
#> $sex
#>
#> $marital
#>
#> $degree
#>
#> $finrela
#>
#> $health
这是其中一个表格的屏幕截图:
library(htmlTable)
library(tidyverse)
library(ggmosaic) for "happy" dataset
我想创建一个函数,为数据集中的所有分类变量创建频率表,然后为每个分类变量生成 htmlTables。但是,通过使用 purrr::map,表位于列表中。如何使用 htmlTable 生成表格?或者生成类似表格以供发布的任何更好的包?我想我需要拆分列表或使用额外的 purrr::map 功能?帮助将不胜感激...
Something like this...
FUN<-function(data){
TAB<-happy%>%select_if(is.factor)%>%
map(table)
TABLES<-htmlTable(TAB)
return(TABLES)
}
这是一个解决方案,它使用 tibble
来存储函数的参数以及生成的 HTML 字符串:
编辑: 添加了新列(百分比)
library(ggmosaic)
library(purrr)
library(tidyverse)
library(htmlTable)
library(magrittr)
library(scales)
data(happy)
# Use a subset of `happy` for the example
h <- happy %>% as_tibble %>% sample_n(100)
# create the function
make_html_table <- function(data, .name, .col_names) {
data %>%
table %>%
as.data.frame %>%
set_colnames(.col_names) %>%
as.data.frame %>%
mutate(percent = scales::percent(count/sum(count))) %>% # add the percent column
htmlTable(caption = .name)
}
# Apply the function and store the results in a tibble
tbl <-
h %>%
select_if(is.factor) %>%
{ tibble(NAME = names(.),
data = map(., ~.x)) } %>%
mutate(TABLE = map2(.x = data,
.y = NAME,
.f = make_html_table,
.col_names = c("levels", "count")))
# Check out the tables in the Viewer Pane (if you're using RStudio)
tbl %>% extract2("TABLE") %>% map(htmlTableWidget)
#> $happy
#>
#> $sex
#>
#> $marital
#>
#> $degree
#>
#> $finrela
#>
#> $health
这是其中一个表格的屏幕截图: