标签: flextable

在flextable中设置方程的字体系列和大小

我正在寻找一个选项来设置flextable.

一般来说,字体系列和表格、行和列的大小可以通过糖函数flextable::font和来设置flextable::fontsize。但是,无论是在 HTML 输出中还是在导出到 docx 时,两者都不会影响字体系列和方程的大小。

运行下面的 reprex 会为文本列提供正确的字体系列和大小,但不会为公式列提供正确的字体系列和大小。

library(flextable)

# Note: Running the reprex requires the `equatags` package. 
# Also equatags::mathjax_install() must be executed
# to install necessary dependencies. See ?flextable::as_equation.

eqs <- c(
  "(ax^2 + bx + c = 0)",
  "a \\ne 0",
  "x = {-b \\pm \\sqrt{b^2-4ac} \\over 2a}"
)
text = LETTERS[1:3]
df <- data.frame(text = text, formula = eqs)
df
#>   text                                 formula
#> 1 …
Run Code Online (Sandbox Code Playgroud)

r flextable officer

7
推荐指数
1
解决办法
707
查看次数

使用 flextable r 包格式化多列

是否可以使用灵活的一行脚本来格式化多列?

该示例包括两种不同类型的双精度变量。我想:

  1. 将大于 1000 的变量舍入到最接近的 1000 并添加千位逗号格式,以及
  2. 舍入变量小于一到两位小数

使用 flextable 这相对简单,但会变成一个包含更大数据集的钻孔。我看不出有什么方法可以更有效地做到这一点。

我可以使用 dplyr 来预处理数据(尽管逗号格式需要将变量类型从 double 更改为 character)。如果可能的话,我更喜欢在 flextable 中做到这一点。我知道 Huxtable 可以进行多列格式化。用户是否可以创建定制的 set_formatter_type 函数?

移动电源

set.seed(100)

tib <- tibble(a = letters[1:4],
              b = runif(4)*sample(c(10000, 1000000, 10000000), 4, replace = TRUE),
              c = runif(4)*sample(c(10000, 1000000, 10000000), 4, replace = TRUE),
              d = runif(4)*sample(c(10000, 1000000, 10000000), 4, replace = TRUE),
              e = runif(4),
              f = runif(4))


  regulartable(tib) %>%
  set_formatter(b = function(x) format(round(x, -3), big.mark = ",")) %>% 
  set_formatter(c = function(x) format(round(x, -3), big.mark …
Run Code Online (Sandbox Code Playgroud)

r flextable

6
推荐指数
1
解决办法
2725
查看次数

R 中的 flextable 中的相同列名

我正在尝试从 R 包“flextable”创建一个“灵活”对象。我需要将相同的列名称放在多个列中。当我将它们放入函数“flextable”中的“col_key”选项时,我收到“重复的 col_keys”错误。有办法解决这个问题吗?

a<-c(1:8)
b<-c(1:8)
c<-c(2:9)
d<-c(2:9)
A<-flextable(A,col_keys=c("a","b","a","b"))
Run Code Online (Sandbox Code Playgroud)

这是我收到错误的示例代码。

r header flextable

6
推荐指数
1
解决办法
4874
查看次数

从flextable中的字符串动态设置colnames

flextable帮助的细节描述了将新的标头,对每一个新的头名手动键入每个现有的头名,如下所示:

library(flextable)
ft_1 <- regulartable(head(iris))
ft_1 <- set_header_labels(ft_1, Sepal.Length = "SL",
                          Sepal.Width = "SW", Petal.Length = "PL",
                          Petal.Width = "PW"
)
ft_1
Run Code Online (Sandbox Code Playgroud)

我怎样才能从一个字符串中添加所有新的标题名称,例如

(names2<-c('SL','SW','PL','PW','SPECIES'))
[1] "SL"      "SW"      "PL"      "PW"      "SPECIES"
Run Code Online (Sandbox Code Playgroud)

?

到目前为止,我已经管理了一个非常hacky的解决方案:

names(names2)<-names(ft_1$header$dataset[1,])

ft_1$header$dataset[1,]<-names2
Run Code Online (Sandbox Code Playgroud)

r flextable officer

6
推荐指数
1
解决办法
470
查看次数

如何将希腊字母 delta (?) 插入到弹性对象的标头中?

我正在使用 RMarkdown 创建一个 Word 文档(我需要输出为 .docx 格式)。

\n\n

我想使用flextable(或任何其他包)来正确格式化我的标题。

\n\n

我正在尝试让希腊符号 delta (\xe2\x88\x86)正确显示......这似乎是可能的,因为在此处的帮助页面中(https://davidgohel.github.io/flextable/articles/format .html#display-function)作者成功使用 \\u03BC 插入“\xce\xbc”符号(如果我使用他的代码,我也可以,如下),但我无法让它为 delta 工作使用\\u2206\\u0394,如果我用下面的代码替换 \\u03BC 。我正在使用的代码生成此表,但我想用增量替换突出显示的位。

\n\n

在此输入图像描述

\n\n

这就是我尝试时得到的结果,例如\\u2206

\n\n

在此输入图像描述

\n\n

有什么建议么?

\n\n
library(flextable)\nif( require("xtable") ){\n  mat <- round(matrix(c(0.9, 0.89, 200, 0.045, 2.0), c(1, 5)), 4)\n  mat <- xtable(mat)\n  ft <- xtable_to_flextable(x = mat, NA.string = "-")\n  print(ft$col_keys)\n  ft <- flextable::display(ft, i = 1, col_key = "X1", \n    pattern = "{{val}}{{pow}}", part = "header",\n …
Run Code Online (Sandbox Code Playgroud)

unicode r ms-word flextable r-markdown

5
推荐指数
1
解决办法
6338
查看次数

弹性对象第一列的缩进

我正在构建flextable对象来显示表格,有时我想在第一列中添加一个或多个缩进,在其中显示一些行的名称。

接下来我分享一些代码来模拟一些数据并提供一个可重现的示例。我的问题的真正出发点是ft表1):

library(dplyr)
library(flextable)

# Simulate data
g_A <- expand.grid(x = "A", y = c("A_1", "A_2"), z = c("A_1_a", "A_1_b", "A_2_a", "A_2_b"))
g_B <- expand.grid(x = "B", y = c("B_1", "B_2"), z = c("B_1_a", "B_1_b", "B_2_a", "B_2_b"))
g <- rbind(g_A, g_B)
n <- 123
set.seed(1)
df <- sample_n(g, n, replace = TRUE)

# Build table
tmp <- c(table(df$x)[1],
         table(df$y)[1],
         table(df$z)[1:2],
         table(df$y)[2],
         table(df$z)[3:4],
         table(df$x)[2],
         table(df$y)[3],
         table(df$z)[5:6],
         table(df$y)[4],
         table(df$z)[7:8])
my_tab <- data.frame("tmp" = names(tmp), "counts" = …
Run Code Online (Sandbox Code Playgroud)

r flextable

5
推荐指数
1
解决办法
1674
查看次数

编织到 docx (RMarkdown) 时表格中的分数和上标

我一直在使用 officedown 来编织到 docx。我遇到了一个问题,我必须在表中创建所需的上标,如下所示

图片

这让我回顾了创建表格的所有方法。我没有在这里输入所有内容,而是在下面创建了一个 Rmd 文档,其中包含所有问题。我很想知道是否有人有任何意见或建议。我的目标很简单。我们想要一个导出到 docx 的表

  1. 显示在表格列表中
  2. 有标题
  3. 文内参考
  4. 正确显示分数

请在此处找到带有示例的详细 Rmd

对于 Rmd 文档的长度,我深表歉意,但我想详细展示我试图做的事情以促进答案和建议

更新:官方GitHub 上有点烤,但目前似乎无法使用分数,但下标正在使用ftExtra

r flextable r-markdown officer

5
推荐指数
0
解决办法
118
查看次数

在 R 的 flextable 包中将数字列格式化为百分比

例如我正在使用虹膜数据:

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语法来弥补它?

r flextable officer

5
推荐指数
2
解决办法
3317
查看次数

有没有办法将弹性对象导出到 Excel?

我想尝试将弹性对象导出到 Excel 电子表格,但我找不到任何解决方案。根据此文档(https://davidgohel.github.io/flextable/reference/index.html),该包允许用户将可格式化对象导出为 pdf、文档和 ppt。

一种解决方法是将其保存为其中一种格式,然后将其保存到 Excel 电子表格中,但我正在寻找一种不太黑客且可扩展到许多表的解决方案。

excel r flextable

5
推荐指数
1
解决办法
3199
查看次数

使用 flextable 中的 add_header_row 创建不同宽度的列

我有数据如下:

dat <- structure(list(rn = c("type_A", "type_B", "type_C"
), freq = list(c(0, 0, 0, 5, 7, 16, 28), c(2, 1, 0, 5, 0, 8), 
    c(0, 0, 3, 5, 12, 53, 73)), colspan = list(c(`25` = 1, `100` = 2, 
`250` = 1, `500` = 1, `1000` = 1, Infinity = 3, SUM = 1), c(`25` = 1, 
`100` = 2, `250` = 1, `500` = 1, Infinity = 4, SUM = 1), c(`25` = 1, 
`50` = 1, `100` = …
Run Code Online (Sandbox Code Playgroud)

r list flextable r-markdown

5
推荐指数
1
解决办法
1120
查看次数

标签 统计

flextable ×10

r ×10

officer ×4

r-markdown ×3

excel ×1

header ×1

list ×1

ms-word ×1

unicode ×1