使用tabulator创建flextable时如何引用含@符号的列
解决flextable中含
@符号的列名引用问题 当使用tabulator()生成flextable时,自动生成的列名(如00-11@Age)包含特殊符号@,直接在compose()的表达式中引用会导致解析失败,可通过以下两种方法解决:
方法1:用get()函数引用特殊列名
在compose()的value参数中,通过get()传入字符串形式的列名来提取对应值:
compose(ft, i = ~Display=="Good", j = "00-11@Age", value = as_paragraph( sprintf("%.0f", get("00-11@Age")) ))
方法2:提前重命名列(更易维护)
先将带@的列名替换为常规名称,后续操作直接使用新列名即可:
# 查看当前所有列名 colnames(ft) # 单个列重命名 ft <- set_flextable_colnames(ft, old = "00-11@Age", new = "Age_00_11") # 批量替换所有含@的列名(将@替换为下划线) new_colnames <- gsub("@", "_", colnames(ft)) ft <- set_flextable_colnames(ft, new = new_colnames) # 用新列名进行条件格式化 compose(ft, i = ~Display=="Good", j = "Age_00_11", value = as_paragraph( sprintf("%.0f", Age_00_11) ))
内容的提问来源于stack exchange,提问作者Fred
相关产品推荐
相关产品推荐

