r 函数返回多个值_R 技巧 | 绘制nomogram列线图的细节优化
生活,有时候就需要些技巧~
使用 nomogram
绘制列线图时,有个参数fun,输入计算特定时间点的生存函数,如果是多个时间点的话,则使用列表形式:
If more than one transformation is plotted, put them in a list, e.g.
list(function(x)x/2,function(x)2*x)
.
如计算
surv = Survival(fit) # 生存函数
surv1 = function(x) surv(1*365, lp=x) # 1年生存
surv2 = function(x) surv(3*365, lp=x) # 3年生存
surv3 = function(x) surv(5*365, lp=x) # 5年生存
对应的参数 funlabel 用于设置显示,此时就是:
nomogram(fit, fun = list(surv1, surv2, surv3),
funlabel = c("1-year Survival Probability",
"3-year Survival Probability",
"5-year Survival Probability"),...)
没任何问题,除了...我觉得代码有些高度重复。因为,真正需要改变的仅仅是时间点的值而已,故可以将其作为 lapply()
的参数,返回列表即可!
对此,funlabel 比较容易:
times = c(1,3,5)
labels = lapply(times, function(time) paste0(time, "-year Survival Probability"))
难点在于参数 fun,因为其输入是函数对象或函数对象构成的列表:
class(surv1)
[1] "function"
所以需要把 paste0
返回的字符串转换为 function 对象,可以使用 eval
搭配 parse
函数:
func = lapply(times, function(time) eval(parse(text = paste0("function(x) surv(", time, "*365, x)"))))
综上, nomogram
命令改成如下即可:
nomogram(fit, fun = funcs, funlabel = labels,...)
当然,这么做的好处并不仅仅在于装B,而是:
1、设置多个时间点时,可以极大地避免代码冗余
2、可以更方便的设置时间点。如果设置的时间点超出了最长生存时间,就会报错:
Error in approx(fu[s], xseq[s], fat, ties = mean) :
need at least two non-NA values to interpolate
此时,就不需要在代码中寻找并更改N次时间值,只需要修改上示times变量即可!
3、进一步地, lapply
的方式有利于根据输入的生存时间,自行判断时间值的取值范围并作出调整,避免在程序执行中报错!
R系列·往期精彩
R技巧 | 如果一句命令就能解决,为什么还要三句?
R语言 | 如果你再问我怎么安装R包
数据挖掘 | 快速实现生存分析森林图
r 函数返回多个值_R 技巧 | 绘制nomogram列线图的细节优化相关推荐
- r 函数返回多个值_R语言:广义估计方程(GEE)
01 解决何种问题 在临床研究中,经常会比较两种治疗方式对患者结局的影响,并且多次测量结局.例如为了研究两种降血糖药对血糖的控制结果是否存在差异,研究者会在两组人群服药后不同的时间点记录血糖值,然后评 ...
- r 函数返回多个值_第四讲 R描述性统计分析
在"R与生物统计专题"中,我们会从介绍R的基本知识展开到生物统计原理及其在R中的实现.以从浅入深,层层递进的形式在投必得医学公众号更新. 在上一讲中,我们介绍了第三讲 R编程基础- ...
- c++中函数放在等号右边_如何从C或C++中的函数返回多个值?
新程序员通常在寻找从函数返回多个值的方法.不幸的是,C和C++不允许直接这样做.但是幸运的是,通过一些巧妙的编程,我们可以轻松实现这一目标. 下面是从C函数中返回多个值的方法: 通过使用指针. 通过使 ...
- Python学习之函数返回多个值
Python学习之函数返回多个值 问题的引出 Python中,一个函数能不能一次返回多个值? 在C语言中,函数最多返回一个值,如果要返回多个值,可以把这些值封装在一个结构体中.注意,C语言不允许函数返 ...
- Android JNI编程(三)——C语言指针的初步认识、指针变量、互换两个数、函数返回多个值...
版权声明:本文出自阿钟的博客,转载请注明出处:http://blog.csdn.net/a_zhon/. 目录(?)[+] 一.什么是指针? 简单来说: 指针就是内存地址 内存地址就是指针. ...
- python学习笔记-day6-函数的延续【汉字转拼音模块,函数返回多个值,匿名函数,列表生成式,generator生成器,三元运算符】...
继续来说函数的后续知识点,主要是函数返回多个值,匿名函数,三元运算符,算是比较小的知识点. 一.汉字转拼音模的使用 1.安装模块 #install xpinyin 2.如果使用 结果: 二.函数返回多 ...
- python函数返回多个值_python函数返回多个值的示例方法
python可以返回多个值,确实挺方便 函数里的return只能返回一个值,但是返回类型是没是限制的 因此,我们可以"返回一个 tuple类型,来间接达到返回多个值". 例子是我在 ...
- Java中如何实现一个函数返回多个值
由于java中没有指针,不能像C++一样通过指针的方式实现一个函数返回多个值,因此在java中必须采用变通的方式解决,常用的方式有以下几种: 1.封装一个实体类,将要返回的值封装进去: 2.通过map ...
- C语言通过指针间接的实现函数返回多个值
C语言通过指针间接的实现函数返回多个值 本例题中通过把指针作为函数参数来传递,依次达到改变变量的值的目的,最后实现一个函数返回两个变量的值 int *X,*X应该被看成一个整体来看,表示一个整形. # ...
最新文章
- 不知道发这些有啥用!多分享些技术噻...
- 修改某个用户名和密码
- 2015年第六届蓝桥杯本科B组C++省赛个人题解
- Axure高保真家政服务用户端app全局说明+家政服务员工移动端app+家政服务web端管理信息系统(订单管理+服务管理+报表统计+财务管理+营销管理+人员管理)
- 31 款轻量高效的开源 JavaScript 插件和库
- 这10道大厂Java面试题,我敢打赌90%的人都不会!!!
- 银监计算机类 考试题库,银监会(计算机类)笔试资料-微观经济学试题库 .doc...
- reactbootstrap php,什么是React-Bootstrap
- linux unzip命令
- 如何自主搭建信息管理系统
- Could not find module ‘xxx‘ for target ‘xxx‘; found: i386, x86_64-apple-ios-simula错误解决
- matlab 科研绘图
- Spring事务管理A方法内部调用B方法的回滚问题(springboot事务管理)
- linux防火墙_专业的linux web应用防火墙国内排名推荐
- Xmind进阶教程:配色指南
- Numpy计算三角函数
- Android获取手机序列号
- js判断密码是否包含数字、大写字母、小写字母、特殊符号
- matlab中cell是什么意思,matlab中cell的用法
- 编程题——Fibonacci数列