关于reporter包中define函数visible=FALSE参数未隐藏指定列的问题咨询
关于reporter包中define函数visible=FALSE参数未隐藏指定列的问题咨询
嗨,我刚看了你的问题和代码,你遇到的是reporter包里define函数设置visible=FALSE后,指定列还是没被隐藏的情况对吧?我来给你分析下可能的原因和解决办法:
首先,最直接的问题可能是你在create_table里指定了show_cols = 1:8,如果那些你想隐藏的ord_layer_*列刚好在这前8列里,即使设置了visible=FALSE,show_cols的优先级可能会让这些列依然显示。另外,有时候reporter的visible参数是控制列是否可见,但如果列是用于内部排序或分组的,可能需要更直接的处理方式。
给你两个可行的解决方案:
方案一:提前移除不需要显示的列(最推荐)
与其依赖visible=FALSE,不如在构建表格之前就把那些不需要的列从数据框dt里删掉,这样从根源上避免它们出现在报告里。修改你的代码如下:
# 处理列名后直接移除不需要的列 dt <- dt %>% mutate(ord_layer_1=ifelse(row_number()!=1,ord_layer_1+1,ord_layer_1)) %>% rename_all(~str_replace_all(.,'\\s','_')) %>% select(-c(ord_layer_index, ord_layer_1, ord_layer_2)) # 移除这三个不需要显示的列 # 之后创建表格时不需要再指定show_cols=1:8,因为已经过滤掉无关列了 tbl <- create_table(dt) %>% define(row_label1, visible = FALSE) %>% define(row_label2, label = "", indent = .25) %>% define(var1_Placebo, label = "Placebo", align = "center", n = 86) %>% define(var1_Xanomeline_High_Dose, label = "Xanomeline High Dose", align = "center", n = 84) %>% define(var1_Xanomeline_Low_Dose, label = "Xanomeline Low Dose", align = "center", n = 84)
这样处理后,那些ord_layer_*列就不会被包含在表格数据里,自然不会出现在最终的RTF报告中。
方案二:调整show_cols并确认包版本
如果你坚持想用visible=FALSE的方式,首先要确保create_table的show_cols参数没有包含你想隐藏的列。比如,如果你的dt里前8列包含了ord_layer_*列,那就需要把这些列从show_cols中排除。同时,建议你把reporter包更新到最新版本,因为旧版本可能存在参数失效的bug:
# 更新reporter包 install.packages("reporter") # 假设你需要显示的列是除了ord_layer_*之外的列,先确认列名索引 # 比如dt的列中,row_label1、row_label2、var1_Placebo等是需要显示的,对应的索引不是ord_layer_*的索引 tbl <- create_table(dt, show_cols = c(2,3,4,5,6,7)) %>% # 替换成你需要显示的列的索引 define(row_label1, visible = FALSE) %>% define(row_label2, label = "", indent = .25) %>% define(var1_Placebo, label = "Placebo", align = "center", n = 86) %>% define(var1_Xanomeline_High_Dose, label = "Xanomeline High Dose", align = "center", n = 84) %>% define(var1_Xanomeline_Low_Dose, label = "Xanomeline Low Dose", align = "center", n = 84) %>% define(ord_layer_index, visible = FALSE) %>% define(ord_layer_1, visible = FALSE) %>% define(ord_layer_2, visible = FALSE)
不过这个方法需要你准确对应列的索引,不如方案一方便可靠。
你可以试试第一种方案,应该就能解决你不想显示那些列的问题了!
备注:内容来源于stack exchange,提问作者jkatam
相关产品推荐
相关产品推荐

