Kal*_*lin 5 r r-markdown formattable
我对使用formattableR 包中的工具感兴趣,但我只想在表中显示有变化的地方。也就是说,我想要kableExtra通过collapse_rows()函数在包中提供的分层行标签。
例如,使用kable()and kableExtra,我可以这样做:
library(dplyr)
library(knitr)
library(kableExtra)
iris %>%
group_by(Species) %>%
slice(1:2) %>%
select(Species, everything()) %>%
kable() %>%
collapse_rows(1, valign="top")
Run Code Online (Sandbox Code Playgroud)
产生这个:
但是,我想使用formattable包和函数来执行此操作,以便我可以在输出期间在特定列上运行任意函数。具体来说,我想添加“迷你图”作为新列。我可以使用knitrand做到这一点formattble,但collapse_rows据我所知,我失去了。
有什么办法可以折叠行formattable吗?
collapse_rows编辑 kable 对象。如果您查看代码,它会根据所选的输出格式(HTML/PDF/文本)执行许多不同的检查。
如果您正在寻找一种更通用的折叠行的方法,我们必须在绘制表格之前编辑 data.frame。我编写了一个函数collapse_rows_df,它将折叠数据框中的指定列。
#' Collapse the values within a grouped dataframe
#'
#'
collapse_rows_df <- function(df, variable){
group_var <- enquo(variable)
df %>%
group_by(!! group_var) %>%
mutate(groupRow = 1:n()) %>%
ungroup() %>%
mutate(!!quo_name(group_var) := ifelse(groupRow == 1, as.character(!! group_var), "")) %>%
select(-c(groupRow))
}
Run Code Online (Sandbox Code Playgroud)
使用此函数,输出到格式表:
iris %>%
group_by(Species) %>%
slice(1:2) %>%
select(Species, everything()) %>%
collapse_rows_df(Species) %>%
formattable()
Run Code Online (Sandbox Code Playgroud)
enquo()如果您对函数或函数内的使用感到困惑quo_name(),您应该查看 dplyr 如何使用非标准评估:https://dplyr.tidyverse.org/articles/programming.html