使用预先生成的字符串和索引方法为kableExtra group_rows

时间:2017-10-26 16:04:09

标签: r r-markdown kableextra

使用Rmarkdown生成PDF。我引入了从先前函数生成的冗长文本字符串,以用作表中的分组行标签。正常的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))
```

编织时出现以下错误:“解析时出错(text = x,srcfile = src):: 23:30:意外'= '22:”

在40多个表中,其中一些表具有多达10个行分组,因此很容易看出索引方法如何节省时间并防止错误。这里添加的功能(或者我可能错过的解决方法)将是最优秀的!

1 个答案:

答案 0 :(得分:2)

我可以使用

将此文档渲染为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