gpt4 book ai didi

flextable - 创建 flextable 后删除 flextable 列

转载 作者:行者123 更新时间:2023-12-03 16:03:50 27 4
gpt4 key购买 nike

我创建了一个基于 csv 文件的 flextable,我在上面添加了一些样式,更改了一些单元格。然后我想在将它添加到文档之前删除这个 flextable 的特定列。
有没有办法创建 flextable 的副本并指定 col_keys?

mydf <- GetData(....)
cols <- names(mydf)
myft <- flextable(mydf, col_keys = cols)
# Adding style to ft...
# ....

# Here I want to remove one column to the ft (and only here, not when first creating the ft)
# something as:
# ft <- CreateCopyOfFlextable(ft,cols[-which(cols=='COLB')])
#
my_doc <- read_docx()
my_doc <- my_doc %>% body_add_par("") %>%
body_add_flextable(value = ft)

print(my_doc, target = 'c:/temp/doc.docx')

最佳答案

我只是遇到了同样的问题,并且有一段时间在谷歌上搜索解决方案。 @David-Gohel 在这里确实有答案,但我觉得有必要提供一个类似的解决方案,并提供额外的解释。

我的问题和 OP 是我们想使用不会显示的列中的数据来影响将显示的列的格式。最初并不明显的概念是您可以将数据帧发送到 flextable。列多于您打算显示的列数(而不是显示所有列并删除您使用过的列)。然后,通过使用 col_keys参数,您可以只选择要显示的那些列,同时保留其余列以进行额外处理(例如,使用 compose()paragraph()add_chunk() )。

如果我理解正确,COLB应该是一个标志,表明 COLC 的某些行应该修改。如果是这样,那么我的解决方案如下所示:

library(flextable)
library(magrittr)
library(officer)

df <- data.frame(COLA=c('a', 'b', 'c'),
COLB=c('', 'changevalue', ''),
COLC=c(10, 12, 13))

ft <- flextable(df, col_keys = c("COLA", "COLC")) %>% # Retain but don't display COLB
compose(i = ~ COLB =='changevalue', # Use COLB for conditional modifications
j = "COLC",
value = as_paragraph(as_chunk('100')),
part = 'body') %>%
style(i = ~ COLB =='changevalue', # Use COLB for conditional formatting on COLC
j = "COLC",
pr_t = fp_text(color = "black",
font.size = 11,
bold = TRUE,
italic = FALSE,
underline = FALSE,
font.family = "Times New Roman"),
part = "body")

ft

以下是上述代码产生的结果(例如,“changevalue”列是在 COLC 中有条件地插入 100 以及更改格式的触发器):

Example Flextable

关于flextable - 创建 flextable 后删除 flextable 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56148103/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com