r语言 - 有没有一种(简单的)方法将平面列联表(ftable)转换为flextable



我曾经根据旧的包reporteRs和rtable从"平面"列联表(ftable,stats-package(创建FlexTable对象。在这些软件包过时并从 CRAN 中删除之前,已经有一个功能。Flextable.ftable,它做到了。

--> 参见:https://rdrr.io/cran/rtable/man/as.FlexTable.ftable.html

有没有办法为新的柔性包装实现这种转换?我还找不到类似的功能。

这是一个非常好的问题。迁移已开始,但尚未完成。下面是一个现在应该完成这项工作的代码:

ftable_to_flextable <- function( x ){
row.vars = attr( x, "row.vars" )
col.vars = attr( x, "col.vars" )
rows <- rev( expand.grid( rev(row.vars), stringsAsFactors = FALSE ) )
cols <- rev(expand.grid( rev(col.vars), stringsAsFactors = FALSE ))
xmat <- as.matrix(x)
cols$col_keys = dimnames(xmat)[[2]]
xdata <- cbind(
data.frame(rows, stringsAsFactors = FALSE),
data.frame(xmat, stringsAsFactors = FALSE)
)
names(xdata) <- c(names(row.vars), cols$col_keys)
ft <- regulartable(xdata)
ft <- set_header_df(ft, cols)
ft <- theme_booktabs(ft)
ft <- merge_v(ft, j = names(row.vars))
ft
}
library(flextable)
library(magrittr)
ftable(Titanic, row.vars = 1:3) %>% ftable_to_flextable()
ftable(Titanic, row.vars = 1:2, col.vars = "Survived") %>% ftable_to_flextable()
ftable(Titanic, row.vars = 2:1, col.vars = "Survived") %>% ftable_to_flextable()

最新更新