我正在研究GWT项目,我们使用FlexTable来显示一些数据.我知道我们应该使用CellTable,因为它具有更好的性能,但FlexTable更容易设计样式(特定样式的单元格),并且更容易更新特定的单元格.
要接收表的更新,我们正在使用WebSockets.我们现在面临的问题是,当通过WebSockets每秒发生超过100次更新时,CPU负载会很高.来自WebSocket连接的每条消息都包含表中多个单元格的更新.所以在实践中,每秒应该有超过100个更新,应该在FlexTable中呈现.带有4GB RAM的3GHz i5的CPU负载约为50%.如果我禁用数据的实际呈现(注释掉setText()方法调用),则CPU负载下降到5-10%.所以我知道DOM更新是瓶颈,而不是代码的其他部分.
它会更好吗?
是否有更好的方法来实现表并提高性能?
我试图谷歌,如果有人有类似FlexTable的问题,但只发现一般认为它只是缓慢,没有具体.我们完全使用JavaScript完成应用程序原型,每秒100次更新,CPU负载大约为15%
更新
Dropping css淡入淡出效果,我们用来表示单元格值的变化,将CPU负载降低了约10%.所以似乎DOM不是唯一的问题.
如何将标题添加到呈现给docx的弹性表中?编辑:目的是产生一个适当的标题,可以在文档中引用该标题以产生表和内联引用的列表。
iris.t <-
iris[1:5,] %>%
regulartable() %>%
style(pr_c = officer::fp_cell(vertical.align = "bottom",
border.bottom = officer::fp_border(width = 2)), part = "header") %>%
rotate(j = names(iris)[-c(1:2)],
rotation = "tbrl", part = "header", align = "bottom") %>%
height(height = max(dim_pretty(., part = "header")$widths), part = "header") %>%
width(width = dim_pretty(.,part = "body")$widths)
iris.t
Run Code Online (Sandbox Code Playgroud) flextable在我的 R Markdown 文档中自定义表格时,我一直很幸运。但是,我正在努力更改页面上表格的位置。默认情况下,表格似乎以页面为中心。我希望我的一张表格与左边距对齐。我怎么做?
我希望能够使用Officer R包交叉引用Word文档中的表格或图形。
到目前为止,我已经看过这些材料,但是它们似乎并没有解决的方法:https : //davidgohel.github.io/menz/articles/word.html#table-and-image-captions 和类似的问题 为在docx中可伸缩
在这两种方法中,我只能插入标题作为2级标题,而不能插入真正的表标题。
我想要在Word中执行的操作是插入->交叉引用,然后转到引用类型:表格,然后在此处查看我的标题。现在,我只能在“编号”项下看到标题。
此功能是否存在于官员或其他任何地方?
假设我有 2 个 flextables:
ft1 <- regulartable(head(iris))
ft2 <- regulartable(tail(iris))
Run Code Online (Sandbox Code Playgroud)
它们具有不同的格式:
ft1 <- bg(ft1, bg="green")
ft2 <- color(ft2, color = "blue")
Run Code Online (Sandbox Code Playgroud)
有没有办法在它们已经是 flextables 之后合并这两个,并保持格式?
我可以使用这个合并它们:
ft3 <- regulartable(rbind(ft1$body$dataset, ft2$body$dataset))
Run Code Online (Sandbox Code Playgroud)
但我丢失了所有格式。
我知道在转换为 flextables 之前合并数据帧会更容易,但是我的实际数据的生成方式很困难,因为我试图合并的两个 flextables 是我编写的其他函数的结果。
编辑:
目的是保持单独的格式,如下所示:
我基于 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')
Run Code Online (Sandbox Code Playgroud) 我希望在单个 R Markdown 文档中打印多个 flextables。这在使用 html 输出时并不具有挑战性,但我需要 Word 输出。
对于 html 输出,以下 R Markdown 代码(示例取自https://davidgohel.github.io/flextable/articles/offcran/examples.html#looping-in-r-mardown-documents)生成具有多个 Flextables 的文档:
---
output:
html_document: default
---
```{r}
library(htmltools)
library(flextable)
ft <- flextable(head(iris))
tab_list <- list()
for(i in 1:3){
tab_list[[i]] <- tagList(
tags$h6(paste0("iteration ", i)),
htmltools_value(ft)
)
}
tagList(tab_list)
```
Run Code Online (Sandbox Code Playgroud)
我一直无法使用 Word 文档输出获得等效的输出。How to knit_print flextable with loop in a rmd file 中提出的解决方案 同样适用于 html 输出,但我未能使其在 Word 输出中正确呈现。
任何有关与上述示例等效的 R Markdown Word 文档输出的建议都会非常有帮助!
我正在尝试将(在单个图表中)常规ggplot图表与使用flextable.
考虑以下示例:
library(tidyverse)
library(patchwork)
mydf <- tibble(a = c(1,2,3,4,5,4),
b = c(4,4,4,3,3,3))
p1 <- mydf %>% ggplot(aes(x = a, y = b, color = as.factor(b))) + geom_point()
p2 <- mydf %>% flextable::flextable()
Run Code Online (Sandbox Code Playgroud)
p2 好像
但不幸的是我不能将它与 p1
> p1 + p2
Error: Don't know how to add p2 to a plot
Run Code Online (Sandbox Code Playgroud)
我们可以做什么?谢谢!
例如我正在使用虹膜数据:
library(flextable)
library(officer)
library(magrittr)
ft_test <- head(iris) %>% flextable() %>%
colformat_num(j = c("Sepal.Length", "Sepal.Width",
"Petal.Length", "Petal.Width"), digits = 1)
Run Code Online (Sandbox Code Playgroud)
如果我希望有百分比格式的“Petal.Width”值,正确的语法是什么?我找不到 colformat_percent 函数。有没有办法使用flextable语法来弥补它?
我想修改单元格的一部分的格式,同时保留其余文本不修改以包含在 .docx 报告中:
例如,Brill (菱形菱形) 位于第 22-32 分区(波罗的海)
我的数据是用 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 …Run Code Online (Sandbox Code Playgroud)