楼主: liuqiang0704
967 4

[问答] 请教一个在function中变量名传递的问题 [推广有奖]

  • 0关注
  • 0粉丝

已卖:1份资源

硕士生

64%

还不是VIP/贵宾

-

威望
0
论坛币
28 个
通用积分
34.3151
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
3063 点
帖子
46
精华
0
在线时间
291 小时
注册时间
2015-8-18
最后登录
2025-6-23

楼主
liuqiang0704 发表于 2022-7-27 23:59:03 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
各位大佬,想请教一个问题,这个问题困扰我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吗?先谢谢了,论坛编辑代码太难了,请看附件附有代码。




二维码

扫码加我 拉你入群

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

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

关键词:function Fun CTI TIO UNC

沙发
abelus 发表于 2022-7-29 12:39:05
函数修改为下面这种参数形式试一试
f(dt,fit,dt$age)
已有 2 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
cheetahfly + 10 热心帮助其他会员
Sunknownay + 3 + 3 + 3 热心帮助其他会员

总评分: 论坛币 + 10  学术水平 + 3  热心指数 + 3  信用等级 + 3   查看全部评分

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

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

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

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-21 07:01