flextable中的对齐在Rstudio查看器中正确,在Word中不正确

时间:2019-03-21 22:30:25

标签: alignment flextable officer

我试图使一些表中的某些列左对齐。在大多数情况下,这没有问题,但在其他情况下,使用以下选项选择的列:

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 <- 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(),然后我就没有运气了。

我尝试了其他对齐方式,但是问题似乎只出现在左侧对齐方式上。

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

因此,我假设文本本身是引起问题的原因?有人知道字符变量本身可能出什么问题吗?还是其他想法?

1 个答案:

答案 0 :(得分:0)

解决了...

在我的灵活操作中,添加了这个领先的空白。

因此,修剪空白之前什么也没做。必须在命名我的桌子之前修剪一下(循环内)。这是我用来纠正它的循环。

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"]])
}