0

我试图在我的一些表格中左对齐一些列。大多数情况下,这没有问题,但其他时候,选择的列是:

ft <-align(ft, j=1:2, align = "left", part = "body")

ft <-align(ft, j=4:6, align = "left", part = "body")

在 Rstudio 查看器中看起来正确。我使用循环制作了 39 个表格,并希望使用officer 将它们添加到word 文档中

但是,当使用以下命令打印到 word doc 时:

doc <- read_docx() %>%
body_add_flextable(tab0)

body_add_break(doc, pos="after")

for (i in 1:38) {
  body_add_flextable(doc,get(paste0("tab", i)), align = "left")
  body_add_break(doc, pos="after")
}

print(doc,target=documentname)

它居中对齐列(仅更改左对齐的列)。当我单击文本时,它说它们是左对齐的,但随后我居中并重新左对齐并解决了问题。我只注意到字符变量的问题

在没有运气的情况下,我尝试使用 trimws()flextable 修剪空格。

我尝试了其他对齐,但问题似乎只发生在左对齐。

我不相信我的代码是错误的,因为它适用于我的其他表。因此,我认为尝试制作可重现的代码将是浪费时间。

因此,我假设文本本身导致了问题?有谁知道字符变量本身可能有什么问题?还是有其他想法?

4

1 回答 1

0

解决它...

在我的 flextable 操作中的某个地方添加了这个领先的空白。

所以在没有做任何事情之前修剪空白。必须在命名我的表之前进行修剪(在循环内)。这是我用来纠正它的循环。

for (j in 1: length(ft[["body"]][["content"]][["content"]][["data"]])){
       ft[["body"]][["content"]][["content"]][["data"]][[j]][["txt"]] <- trimws(ft[["body"]][["content"]][["content"]][["data"]][[j]][["txt"]])
}
于 2019-03-22T00:13:20.703 回答