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

dfmacox函数报错:Time变量非数值型问题求助

解决办法
  • 确认变量类型并强制覆盖
    先明确mydata中Days_FU的实际类型,执行:

    str(mydata$Days_FU)
    class(mydata$Days_FU)
    

    若结果不是numeric或integer,强制转换并覆盖原数据框:

    mydata$Days_FU <- as.numeric(as.character(mydata$Days_FU))
    

    注:如果原变量是因子类型,需先转字符再转数值,避免因子水平被错误编码。

  • 排查隐藏的非数值内容
    检查Days_FU中是否存在字符型异常值(比如"NA"字符串、空格等):

    unique(mydata$Days_FU)
    sum(is.na(mydata$Days_FU))
    

    若发现非数值字符,先清理再转换,例如替换空字符串:

    mydata$Days_FU[mydata$Days_FU == ""] <- NA
    mydata$Days_FU <- as.numeric(mydata$Days_FU)
    
  • 检查列名是否存在隐藏格式问题
    确认列名没有空格、特殊符号或不可见字符:

    colnames(mydata)
    

    若Days_FU列名有隐藏空格(如" Days_FU"),重命名列:

    colnames(mydata)[colnames(mydata) == " Days_FU"] <- "Days_FU"
    
  • 转换其他相关变量类型
    从提供的数据结构看,BMI是字符型,可能影响函数内部处理流程,先将其转为数值型:

    mydata$BMI <- as.numeric(mydata$BMI)
    
  • 简化函数调用定位问题
    先去掉非必要参数,测试最基础的调用:

    dfmacox(time = "Days_FU", status = "Death_FU", data = mydata)
    

    若此调用正常,再逐步添加nl.predictors、smoother等参数,定位是否是某个参数引发的连锁问题。

  • 查看函数内部逻辑
    若以上方法无效,查看dfmacox的源码,确认它对time参数的处理逻辑:

    print(dfmacox)
    

    重点检查函数内部是否对time变量做了额外类型转换(比如误转成因子),或使用了eval/parse等可能破坏变量类型的操作。

内容的提问来源于stack exchange,提问作者Andreas P.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 03:35:31