通过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])))))

然后我根据条件值y使用mapply函数函数应用于弹性表x:

MyFT <- mapply(f,MyFT,highlight)

由于某种原因,我的输出看起来像这样:

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

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

解决方法

这与mapply有关,因为参数SIMPLIFY的默认值为TRUE,因此将结果简化为矩阵。要停止并获取列表,请使用:

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