问题描述
我有一个包含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)