将预生成的字符串与 kableExtra 的索引方法一起使用 group_rows

Using pre-generated character strings with index method for kableExtra group_rows

使用 Rmarkdown 生成 PDF。我引入了从先前函数生成的冗长文本字符串,用作 table 中的分组行标签。正常的 kableExtra::group_rows 方法工作正常。由于我在每个组中的行数相同,所以我想使用 index 方法,但这似乎不起作用:

---
output: 
  pdf_document:
    latex_engine: xelatex
    fig_caption: true
---
```{r}
library(magrittr)
library(knitr)
library(kableExtra)

# Build some data
df <- data.frame(x=1:12, y=13:24, z=25:36)

# Row grouping text gets generated from a separate function
gtext <- c("Group 1: text that I don't want to write out",
           "Group 2: because it gets generated from something else",
           "Group 3: so let's make life easy")

# This works fine:
df %>%
  kable(format="latex", booktabs = TRUE, row.names=FALSE) %>%
  group_rows(gtext[1],1,4) %>%
  group_rows(gtext[2],5,8) %>%
  group_rows(gtext[3],9,12)

# But this doesn't:
df %>%
  kable(format="latex", booktabs = TRUE, row.names=FALSE) %>%
  group_rows(index=c(gtext[1]=4,
                     gtext[2]=4,
                     gtext[3]=4))
```

编织时出现以下错误:"Error in parse(text = x, srcfile = src) : :23:30: unexpected '=' 22:"

在 40 多 table 秒的过程中,有些具有多达 10 行分组,很容易看出索引方法如何节省时间并防止错误。在此处添加功能(或我可能错过的解决方法)将是最棒的!

我可以使用

将此文档呈现为 html
group_rows(index=setNames(c(4, 4, 4), gtext))

问题似乎是您尝试为 index 参数创建命名向量的方式。如果你在控制台中尝试这个,你会得到一个错误:

c(gtext[1] = 4, gtext[2] = 4, gtext[3] = 4)

虽然这不是:

setNames(c(4, 4, 4), gtext)
#>           Group 1: text that I don't want to write out 
#>                                                      4 
#> Group 2: because it gets generated from something else 
#>                                                      4 
#>                       Group 3: so let's make life easy 
#>                                                      4