如何为table1的render.continuous参数添加自定义计算字段lower?
问题解决方法
你的代码崩溃原因是render.continuous参数的写法错误——直接用字符串"Sum"和"SD"做运算无法被程序解析,必须通过自定义函数来计算所需的统计量。
正确的实现步骤如下:
- 自定义一个连续变量渲染函数,在函数内计算Sum、SD以及
lower = Sum - SD*1.64的数值,并格式化输出 - 将这个自定义函数传入
render.continuous参数
完整代码如下:
library(boot) library(table1) melanoma2 <- melanoma # 转换状态变量为因子 melanoma2$status <- factor(melanoma2$status, levels=c(2,1,3), labels=c("Alive", # 参考组 "Melanoma death", "Non-melanoma death")) # 自定义连续变量渲染函数 render_continuous_custom <- function(x) { sum_x <- sum(x, na.rm = TRUE) # 计算总和,忽略缺失值 sd_x <- sd(x, na.rm = TRUE) # 计算标准差,忽略缺失值 lower_x <- sum_x - sd_x * 1.64 # 计算lower值 # 返回格式化后的统计量,保留两位小数可根据需求调整 c(Sum = sprintf("%.2f", sum_x), SD = sprintf("%.2f", sd_x), lower = sprintf("%.2f", lower_x)) } # 生成表格 table1(~ factor(sex) + age + factor(ulcer) + thickness | status, render.continuous = render_continuous_custom, data = melanoma2)
如果只需要给thickness变量单独添加lower字段,而其他连续变量保持默认渲染,可以使用变量级别的渲染设置:
# 定义针对thickness的渲染函数,其他连续变量用默认 render_spec <- list( thickness = render_continuous_custom, .default = render.continuous.default ) table1(~ factor(sex) + age + factor(ulcer) + thickness | status, render.continuous = render_spec, data = melanoma2)
内容的提问来源于stack exchange,提问作者Salvador
相关产品推荐
相关产品推荐

