You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为table1的render.continuous参数添加自定义计算字段lower?

问题解决方法

你的代码崩溃原因是render.continuous参数的写法错误——直接用字符串"Sum"和"SD"做运算无法被程序解析,必须通过自定义函数来计算所需的统计量。

正确的实现步骤如下:

  1. 自定义一个连续变量渲染函数,在函数内计算Sum、SD以及lower = Sum - SD*1.64的数值,并格式化输出
  2. 将这个自定义函数传入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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 16:33:21