【发布时间】:2020-10-17 02:52:06
【问题描述】:
使用 Rmarkdown 和 kable,我需要使用相同格式但具有不同数据集的多个表重复。
例如,在以下两个块中,变化的是DF、用于排序的变量和标题。
有什么办法可以避免为每个块重复 90% 的相同代码?
kable(Crib1 %>% 安排(-Z1) %>%
select(Ranking = TYP, SID, Statement, FA1:FA3), longtable = TRUE, booktabs = TRUE, caption = "Crib Sheet - Factor 1") %>%
折叠行(1,latex_hline =“主要”,valign =“顶部”)%>%
kable_styling(full_width = FALSE, latex_options = c("hold_position", "condensed", "repeat_header"), font_size = 9) %>%
列规格(1,粗体=真)%>%
column_spec(3,宽度=“18em”,斜体=真)%>%
column_spec(4,粗体 = TRUE)
kable(Crib2 %>% 安排(-Z2) %>%
select(Ranking = TYP, SID, Statement, FA1:FA3), longtable = TRUE, booktabs = TRUE, caption = "Crib Sheet - Factor 2") %>%
折叠行(1,latex_hline =“主要”,valign =“顶部”)%>%
kable_styling(full_width = FALSE, latex_options = c("hold_position", "condensed", "repeat_header"), font_size = 9) %>%
列规格(1,粗体=真)%>%
column_spec(3,宽度=“18em”,斜体=真)%>%
column_spec(4,粗体 = TRUE)
我正在尝试构建一个函数
createKableCrib <- function(factor){
Crib <- rlang::sym(paste("Crib", factor, sep=""))
Z <- rlang::sym(paste("Z", factor, sep=""))
cap <- paste("Crib Sheet - Factor", factor, sep=" ")
kable(!!Crib %>% arrange(!!(-Z)) %>%
select(Ranking = TYP, SID, Statement, FA1:FA3),
longtable = TRUE, booktabs = TRUE, caption = cap) %>%
collapse_rows(1, latex_hline = "major", valign = "top") %>%
kable_styling(full_width = FALSE, latex_options = c("hold_position", "condensed", "repeat_header"), font_size = 9) %>%
column_spec(1, bold=TRUE) %>%
column_spec(3, width = "18em", italic = TRUE) %>%
column_spec(4, bold = TRUE)
}
createKableCrib("1")
但我收到以下错误:
Error in UseMethod("arrange_") :
no applicable method for 'arrange_' applied to an object of class "name"
最好的,
达米安
【问题讨论】:
-
让它成为一个函数?
-
我正在尝试这样做。我将编辑帖子以显示我正在尝试构建的功能及其引发的问题..
标签: r r-markdown kable kableextra