首页 > 解决方案 > 通过 FlexTable 列表应用条件文本修改

问题描述

我有一个包含 5 个不同列的 32 个弹性表的列表。我想根据条件将颜色和粗体功能应用于 2 个单独的列。

我的方法如下:

###Create a function that takes an input x (the flextable) and an input y (the values that will be conditioned on
f <- function(x,y){
    x <- color( x,i = y <= 0.05, j=4,color="red")
    x <- bold( x, i = y <= .05, j=4)
    x

我按如下方式创建 y 值。tablerep 包含 32 个数据框的列表,我要调整的列是第 4 列:

  highlight <- lapply(tablerep,function(i) sprintf('%.3f',as.numeric(as.character(unlist(i[4])))))

然后,我使用 mapply 函数根据条件值 y 将该函数应用于 flextables x 列表:

MyFT <- mapply(f,MyFT,highlight)

出于某种原因,我的输出如下所示:

> MyFT
           [,1]        [,2]        [,3]        [,4]        [,5]        [,6]        [,7]        [,8]        [,9]       
header     List,8      List,8      List,8      List,8      List,8      List,8      List,8      List,8      List,8     
body       List,8      List,8      List,8      List,8      List,8      List,8      List,8      List,8      List,8     
footer     List,8      List,8      List,8      List,8      List,8      List,8      List,8      List,8      List,8     
col_keys   Character,5 Character,5 Character,5 Character,5 Character,5 Character,5 Character,5 Character,5 Character,5
caption    List,2      List,2      List,2      List,2      List,2      List,2      List,2      List,2      List,2     
blanks     Character,0 Character,0 Character,0 Character,0 Character,0 Character,0 Character,0 Character,0 Character,0
properties List,2      List,2      List,2      List,2      List,2      List,2      List,2      List,2      List,2     
           [,10]       [,11]       [,12]       [,13]       [,14]       [,15]       [,16]       [,17]       [,18] 

而不是弹性表列表。任何人都可以提供有关为什么会这样的见解吗?

标签: rmapplyflextableofficer

解决方案


这是mapply因为参数的默认值为SIMPLIFYTRUE,所以将结果简化为矩阵。要停止它并获取列表,请使用:

MyFT <- mapply(f,MyFT,highlight, SIMPLIFY = FALSE)

推荐阅读