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

R中无法将coxph类列表保存为JSON/YAML,求Perl可读的存储方案

解决coxph对象转Perl可读格式的方案

coxph是survival包的S3类对象,直接用jsonlite/rjson等工具序列化会因为包不支持该类而报错。核心思路是先把带类标记的coxph对象转成普通R列表,再进行序列化:

1. 剥离coxph类标记,转为普通列表

用unclass()移除对象的类属性,保留所有内部元素(coefficients、nevent、var等)为原生列表结构:

coxph_plain_list <- unclass(European204cad.prs.basic)

2. 序列化为Perl可处理的格式

推荐:JSON格式(Perl生态支持完善)

用jsonlite重新序列化,此时普通列表能正常转换:

library(jsonlite)
# 写入文件,pretty参数让JSON更易读
write_json(coxph_plain_list, "coxph_results.json", pretty = TRUE)

Perl可以用JSON或JSON::XS模块轻松解析这个文件。

备选:YAML格式

如果偏好YAML,使用yaml包:

library(yaml)
write_yaml(coxph_plain_list, "coxph_results.yaml")

Perl的YAML模块可直接读取该文件。

针对大型数据集的优化:拆分保存

如果数据集特别大,把大的数值元素(比如var矩阵)单独存为CSV,小元素存为JSON,更便于Perl处理:

# 保存系数向量为CSV
write.csv(coxph_plain_list$coefficients, "coxph_coeffs.csv", row.names = FALSE)
# 保存协方差矩阵为CSV
write.csv(coxph_plain_list$var, "coxph_var.csv", row.names = TRUE)
# 保存标量/小元数据为JSON
metadata <- list(nevent = coxph_plain_list$nevent, loglik = coxph_plain_list$loglik)
write_json(metadata, "coxph_metadata.json")

验证转换正确性

可以读取文件确认内容无误:

test_json <- read_json("coxph_results.json")
str(test_json)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 23:31:13