0

使用 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))
```

我在编织时收到以下错误:“解析错误(文本 = x,srcfile = src)::23:30:意外'=' 22:”

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

4

1 回答 1

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
于 2017-10-26T21:17:21.327 回答