我有一个很大的数据集,它来自survival
包,我试图将其保存到磁盘:
> typeof(European204cad.prs.basic)
[1] "list"
我不想使用saveRDS
,因为二进制输出只能由R读取。我想用Perl处理输出。
数据是coxph
类,看起来像:
European204cad.prs.basic$coefficients European204cad.prs.basic$nevent
European204cad.prs.basic$var European204cad.prs.basic$terms
European204cad.prs.basic$loglik European204cad.prs.basic$assign
European204cad.prs.basic$score European204cad.prs.basic$wald.test
European204cad.prs.basic$iter European204cad.prs.basic$concordance
European204cad.prs.basic$linear.predictors European204cad.prs.basic$y
European204cad.prs.basic$residuals European204cad.prs.basic$timefix
European204cad.prs.basic$means European204cad.prs.basic$formula
European204cad.prs.basic$method European204cad.prs.basic$call
European204cad.prs.basic$n
我使用过jsonlite
、rlist
和rjson
,但都无法将数据写入文件。
堇青石:
> z <- toJSON(European204cad.prs.basic)
Error: No method asJSON S3 class: coxph
列表:
> list.save(European204cad.prs.basic, file = 'tmp.json', type = 'JSON')
Error: No method asJSON S3 class: coxph
> list.save(European204cad.prs.basic, file = 'tmp.yaml', type = 'YAML')
Error in yaml::as.yaml(x, ...) : Unknown emitter error
以及从rjson
:
> z <- toJSON(European204cad.prs.basic)
Error in toJSON(European204cad.prs.basic) :
unable to convert R type 6 to JSON
如何将此列表保存到磁盘?
1条答案
按热度按时间ldfqzlk81#
既然你想在perl中处理,我推断你不想在模型中使用非数据类对象,我们可以过滤掉我们不想要的组件并将其写入json。
使用
?coxph
中的第一个示例:我们可以看到
mdl
的每个组件是什么:我们不需要
formula
和call
这样的东西,我们可以接受其他的东西:好吧,这是一个你可能(?)想保留,我们将需要重新分类:
在我看来像是矩阵......
请注意,
mdl$y
将丢失其名称。如果要保留矩阵的列名,请转换为框架:出于存档原因,如果要将公式 * 保留为字符串 *,可以使用以下命令之一(然后使用
toJSON
)。