楼主: EveIOU
968 2

[问答] 求助:想忽略某一次迭代错误,不要跳出循环,继续下一次循环迭代 [推广有奖]

  • 1关注
  • 0粉丝

博士生

2%

还不是VIP/贵宾

-

威望
0
论坛币
183 个
通用积分
59.2896
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
3004 点
帖子
87
精华
0
在线时间
196 小时
注册时间
2011-11-18
最后登录
2024-10-23

楼主
EveIOU 发表于 2021-7-30 15:27:43 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
将数据随机分为建模组与验证组,为了获得比较好的建模效果,进行1000次随机分组,种子值分别为1:1000,循环1000次,在迭代到i=140报错,循环跳出,第140行及以后没有数值。特向朋友们请教:
1.我想忽略某一次迭代错误,不要跳出循环,继续下一次循环迭代,如何实现?
2.如何将大括号内的部分代码封装成函数,例如:C_index.test <- function(seed=i) {set.seed(i) 其余略},最后用for (i in 139:141) C_index.test ()的形式调用该函数?我前面尝试过,没有成功。
多谢朋友们!
  1. library(rms)

  2. dat.rank.1 <- read.table('dat.rank.1.txt', sep='\t', header=T)
  3. units(dat.rank.1$OS) <- "Month"

  4. C_index.results1000 <- matrix(nrow = 145, ncol = 4)


  5. # 迭代到i=140报错,循环跳出,第140行及以后没有数值
  6. for (i in 139:141) {
  7.   set.seed(i)
  8.   ID_mod <- sample(1:nrow(dat.rank.1), nrow(dat.rank.1)*2/3)
  9.   dat.model <- dat.rank.1[ID_mod, ]
  10.   dat.model$mod <- 'Training'
  11.   
  12.   dat.validate <- dat.rank.1[-ID_mod, ]
  13.   dat.validate$mod <- 'Validation'
  14.   
  15.   
  16.   ddist <- datadist(dat.model)
  17.   options(datadist = "ddist")
  18.   
  19.   
  20.   f <- cph(Surv(OS, Event) ~ miR.index+T+M, x=T, y=T, surv=T, data=dat.model, time.inc=36)
  21.   validate(f, method="boot", B=1000, dxy=T)
  22.   rcorrcens(Surv(OS, Event) ~ predict(f), data = dat.model)
  23.   C_index <- 1-rcorrcens(Surv(OS, Event) ~ predict(f), data = dat.model)[1]
  24.   
  25.   
  26.   fev <- cph(Surv(OS, Event) ~ predict(f, newdata=dat.validate), x=T, y=T, surv=T, data=dat.validate, time.inc=36)   
  27.   validate(fev, method="boot", B=1000, dxy=T)
  28.   rcorrcens(Surv(OS, Event) ~ predict(f, newdata=dat.validate), data = dat.validate)
  29.   C_index2 <- 1-rcorrcens(Surv(OS, Event) ~ predict(f, newdata=dat.validate), data = dat.validate)[1]
  30.   
  31.   C_index.results1000[i, ] <- c(i, C_index, C_index2, C_index+C_index2)
  32. }

  33. View(C_index.results1000)  # 第141行有数值说明后续迭代成功了
复制代码
代码及数据以网盘及附件两种方式提供,选择一种即可。
链接: https://pan.baidu.com/s/18mQ1takpdV24R28g-LyHsA 提取码: apca
C_index.results4.txt (1.34 KB)
dat.rank.1.txt (289.12 KB)
二维码

扫码加我 拉你入群

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

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

关键词:Index 部分代码 test 如何实现 大括号

沙发
cr7or9 发表于 2021-8-10 16:42:33
好像for的第一层加个try{}

藤椅
EveIOU 发表于 2021-8-16 08:12:55
cr7or9 发表于 2021-8-10 16:42
好像for的第一层加个try{}
多谢指点。查了一下,try(expression, next)解决了循环跳出问题。第二个问题,我大括号内的代码如何封装成函数?这样的话,在try语句内这个expression就简单了,多谢!

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

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