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

升级R和RStudio后CreateTableOne无法输出中位数IQR且转CSV失败

问题与解决方案

问题描述

  • 使用CreateTableOne()生成表格后,在*print()中指定nonnormal*参数,仍无法输出中位数(Median)和四分位距(IQR)
  • 原TableOne对象转CSV的代码报错,错误信息:
    Error in as.data.frame.default(x[[i]], optional = TRUE, stringsAsFactors = stringsAsFactors) : 
      cannot coerce class ‘"TableOne"’ to a data.frame
    

环境与代码信息

R版本信息

R.version
               _                           
platform       aarch64-apple-darwin20      
arch           aarch64                     
os             darwin20                    
system         aarch64, darwin20            
status                                     
major          4                           
minor          5.0                         
year           2025                        
month          04                          
day            11                          
svn rev        88135                       
language       R                           
version.string R version 4.5.0 (2025-04-11)
nickname       How About a Twenty-Six

相关代码

  1. 创建TableOne对象:
TropCVS4.Demo= CreateTableOne(table_vars_Demo, strata =  "MACE30",
                           addOverall = T, includeNA = T, data= TropCVS4, smd = F)
  1. 指定*nonnormal参数的print()*代码:
Nonnormal.Vars <- c("Demo.Age","Demo.Height","Demo.Weight","Demo.BMI","Demo.BSA")

TropCVS4.Demo.table.nonnormal=
  print(TropCVS4.Demo.table,nonnormal = Nonnormal.Vars,showAllLevels = T, smd = F)
  1. 转CSV代码及报错:
TropCVS4.Demo.table= print(TropCVS4.Demo,showAllLevels = T, smd = T)
write.csv(TropCVS4.Demo.table, "tables/TropCVS4.Demo.table.csv")

解决方案

问题1:无法输出中位数和四分位距

问题根源是调用*print()*时使用了错误的对象,且未指定返回格式。解决步骤:

  1. 确认Nonnormal.Vars中的所有变量都包含在table_vars_Demo中,且为数值型变量
  2. 直接对原始的TropCVS4.Demo对象调用*print(),同时指定nonnormal和returnText=TRUE*参数:
Nonnormal.Vars <- c("Demo.Age","Demo.Height","Demo.Weight","Demo.BMI","Demo.BSA")
TropCVS4.Demo.table.nonnormal <- print(TropCVS4.Demo, 
                                       nonnormal = Nonnormal.Vars, 
                                       showAllLevels = TRUE, 
                                       smd = FALSE,
                                       returnText = TRUE)

*returnText=TRUE*会返回文本格式的表格,确保非正态变量以中位数+IQR的形式展示。

问题2:无法将TableOne对象转为CSV

print(TableOne)默认返回的是TableOne类对象,而非数据框,导致write.csv()无法处理。解决方法是在print()中指定returnDataFrame=TRUE,直接返回数据框格式:

TropCVS4.Demo.table <- print(TropCVS4.Demo, 
                             showAllLevels = TRUE, 
                             smd = TRUE,
                             returnDataFrame = TRUE)
write.csv(TropCVS4.Demo.table, "tables/TropCVS4.Demo.table.csv", row.names = FALSE)

*row.names=FALSE*用于避免将行名导出到CSV中,可根据需求调整。

内容的提问来源于stack exchange,提问作者HNM

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 21:44:50