gpt4 book ai didi

r - 修改部分可伸缩单元格的格式

转载 作者:行者123 更新时间:2023-12-04 02:04:18 25 4
gpt4 key购买 nike

我想修改单元格一部分的格式,同时保留未修改的剩余文本以包含在 .docx 报告中:
例如,分割 22-32(波罗的海)中的 Brill(Scophthalmus 菱形)

我的数据是用 HTML 标签设置的,我一直在尝试使用 display() 修改这些标签。功能。我的例子(有点明显)修改了整个单元格。我希望pattern可以使用 {{moustaches}} 修改参数使嵌套格式成为可能,但我没有任何运气。

library(flextable)
library(officer)
library(dplyr)

data <- structure(list(Description = c("Brill (<em>Scophthalmus rhombus</em>) in subdivisions 22-32 (Baltic Sea)",
"Cod (<em>Gadus morhua</em>) in subdivisions 22-24, western Baltic stock (western Baltic Sea)",
"Cod (<em>Gadus morhua</em>) in subdivisions 25-32, eastern Baltic stock (eastern Baltic Sea)",
"Dab (<em>Limanda limanda</em>) in subdivisions 22-32 (Baltic Sea)",
"Flounder (<em>Platichthys flesus</em>) in subdivisions 22 and 23 (Belt Seas and the Sound)",
"Flounder (<em>Platichthys flesus</em>) in subdivisions 24 and 25 (west of Bornholm and southwestern central Baltic)"),
SpeciesScientificName = c("Scophthalmus rhombus", "Gadus morhua", "Gadus morhua", "Limanda limanda", "Platichthys flesus", "Platichthys flesus")),
.Names = c("Description", "SpeciesScientificName"),
row.names = c(NA, 6L), class = "data.frame")

data %>%
mutate(Description = gsub("<em>.*?</em>", "%s", Description)) %>%
flextable() %>%
display(col_key = "Description", pattern = "{{sp_italics}}",
formatters = list(sp_italics ~ sprintf(Description, SpeciesScientificName)),
fprops = list(sp_italics = fp_text(italic = TRUE)))

最佳答案

display 函数定义显示值。它不允许仅格式化单元格中文本的一部分,它定义了段落内容及其格式。我会从一个整洁的 data.frame 开始。

data <- structure(list(id = c("Brill", "Cod", "Cod", "Dab", "Flounder", 
"Flounder"), SpeciesScientificName = c("Scophthalmus rhombus",
"Gadus morhua", "Gadus morhua", "Limanda limanda", "Platichthys flesus",
"Platichthys flesus"), subdivision = c("22-32", "22-24, western Baltic stock",
"25-32, eastern Baltic stock", "22-32", "22 and 23", "24 and 25"
), location = c("Baltic Sea", "western Baltic Sea", "eastern Baltic Sea",
"Baltic Sea", "Belt Seas and the Sound", "west of Bornholm and southwestern central Baltic"
)), class = "data.frame", .Names = c("id", "SpeciesScientificName", "subdivision", "location"),
row.names = c(NA, -6L))

> data
id SpeciesScientificName subdivision
1 Brill Scophthalmus rhombus 22-32
2 Cod Gadus morhua 22-24, western Baltic stock
3 Cod Gadus morhua 25-32, eastern Baltic stock
4 Dab Limanda limanda 22-32
5 Flounder Platichthys flesus 22 and 23
6 Flounder Platichthys flesus 24 and 25
location
1 Baltic Sea
2 western Baltic Sea
3 eastern Baltic Sea
4 Baltic Sea
5 Belt Seas and the Sound
6 west of Bornholm and southwestern central Baltic

您的示例是在一个段落中连接 4 个信息,参数 formatters将需要 4 个参数...
ft <- data %>% 
flextable(col_keys = c("dummy_col", "SpeciesScientificName")) %>%
display(col_key = "dummy_col", pattern = "{{id_}} ({{sciname_}}) in {{subdivision_}} ({{location_}})",
formatters = list(id_ ~ id, sciname_ ~ SpeciesScientificName, subdivision_ ~ subdivision, location_ ~ location ),
fprops = list(sciname_ = fp_text(italic = TRUE), location_ = fp_text(color="red") )) %>%
set_header_labels(dummy_col="whatever") %>%
theme_booktabs() %>% autofit()

read_docx() %>% body_add_flextable(ft) %>% print("test.docx")

enter image description here

关于r - 修改部分可伸缩单元格的格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44781440/

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