如何在R中移除列表元素同时保留原列表的打印格式?
解决survdiff对象移除Call元素后保留打印格式的方法
直接通过索引移除元素会把survdiff对象转换成普通列表,丢失自带的打印格式。要保留格式,关键是删除元素后维持原对象的类属性,以下是两种可行方法:
方法一:按名称删除后恢复类属性
library(survival) surv_diff <- survdiff(Surv(time, status) ~ sex, data = lung) # 按名称过滤掉Call元素 test <- surv_diff[names(surv_diff) != "Call"] # 恢复survdiff类,确保打印格式不变 class(test) <- class(surv_diff) # 打印查看效果 test
方法二:用within函数简化操作
within函数会自动保留原对象的类属性,无需手动设置,代码更简洁:
test <- within(surv_diff, rm(Call)) test
原理说明
survdiff对象的打印格式由其专属的print.survdiff方法控制,直接删除元素后对象会变成普通列表,R会用默认的列表打印方式输出。只要维持对象的survdiff类属性,就会继续调用原打印方法,保留原本的格式。
内容的提问来源于stack exchange,提问作者Village.Idyot
相关产品推荐
相关产品推荐

