全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
917 4
2022-07-27
各位大佬,想请教一个问题,这个问题困扰我3天了,问题如下library(survival)
library(rms)
dt<-cancer
dd<-datadist(dt)
options(datadist='dd')
fit <- cph(Surv(dt$time,dt$status==1) ~ rcs(age,4), x=TRUE, y=TRUE,data=dt)
pr1<-rms::Predict(fit,age=dt$age,fun=exp,type="predictions",ref.zero=T,conf.int = 0.95,digits=2)

这组代码在外部运行得很好,求出了预测数据pr1,我想写个function在已知数据和fit的情况下求pr1



f<-function(data,fit,x){
  fit <- fit
  x<-dt[,x]
  dt<-data
  pr1 <-rms::Predict(fit,x=dt$x,fun=exp,type="predictions",ref.zero=T,conf.int = 0.95,digits=2)
  pr1
}

f(dt,fit,"age")



我调式了一下,主要错在x=dt$x,这一句,在外部运行的是时候是age=dt$age,而在function中运行变成了"age"=dt$age多了一个双引号,导致失败。我想请教一下各位大佬有什么办法可以实现我function中的代码,得出pr1吗?先谢谢了,论坛编辑代码太难了,请看附件附有代码。




附件列表

代码.txt

大小:455 Bytes

 马上下载

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2022-7-29 12:39:05
函数修改为下面这种参数形式试一试
f(dt,fit,dt$age)
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2022-7-30 09:14:17
abelus 发表于 2022-7-29 12:39
函数修改为下面这种参数形式试一试
f(dt,fit,dt$age)
感谢回答,这样也不行,我已经想到方法解决了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2022-8-4 10:57:10
liuqiang0704 发表于 2022-7-30 09:14
感谢回答,这样也不行,我已经想到方法解决了
如何解决的?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2022-8-11 09:39:33
dxystata 发表于 2022-8-4 10:57
如何解决的?
使用substitute函数自行构造一个函数,然后使用call函数调用,在进行映射
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群