楼主: zs2k
14883 8

[问答] 求助:如何忽略循环中的错误 [推广有奖]

  • 0关注
  • 0粉丝

高中生

75%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
395 点
帖子
19
精华
0
在线时间
44 小时
注册时间
2005-1-4
最后登录
2020-11-4

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
小弟最近在写一个R程序,由于中间涉及到阶乘,一旦数字太大就无法进行下去,所以程序在运行中总会不时报错,导致的结果就是循环总是到一半就停了。
由于期间牵涉到各种复杂的函数,小弟暂时还没想到一个好的修正方法。

所以想请教各位大神,R中有没有方法可以忽略循环中的错误,可以做到,例如,停止出错的这次循环跳到下一次。
我想做到如下:
for(i in 1: n)
{
  x[i] <- func(x[i],...)
  if(error occurs)
    next
}
或者说存不存在一个可以指示程序错误的函数,像一个示性函数一样?
二维码

扫码加我 拉你入群

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

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

关键词:修正方法 没想到 For 有没有 如何 程序

回帖推荐

qoiqpwqr 发表于3楼  查看完整内容

这是一个忽略矩阵求逆中出现错误的简单例子。根据你的情况改一下。

本帖被以下文库推荐

沙发
yywan0913 在职认证  发表于 2014-1-10 23:42:37 |只看作者 |坛友微信交流群
暂时不知道
不过如果说是数溢出,可以将值赋予a,if(a=="Inf")  next
已有 1 人评分学术水平 热心指数 收起 理由
qoiqpwqr + 1 + 1 热心帮助其他会员

总评分: 学术水平 + 1  热心指数 + 1   查看全部评分

是什么给了你自信

使用道具

藤椅
qoiqpwqr 发表于 2014-1-11 00:46:30 |只看作者 |坛友微信交流群
这是一个忽略矩阵求逆中出现错误的简单例子。根据你的情况改一下。
  1. count <- 0
  2. inverses <- vector(mode = "list", 100)
  3. repeat {
  4.   if (count == 100) break
  5.   count <- count + 1
  6.   x <- matrix(sample(0:2, 4, replace = T), 2, 2)
  7.   x.inv <- try(solve(x), silent=TRUE)
  8.   if ('try-error' %in% class(x.inv)) next
  9.   else inverses[[count]] <- x.inv
  10. }
复制代码
已有 1 人评分学术水平 热心指数 收起 理由
求证1加1 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1   查看全部评分

使用道具

板凳
zs2k 发表于 2014-1-11 14:28:04 |只看作者 |坛友微信交流群
qoiqpwqr 发表于 2014-1-11 00:46
这是一个忽略矩阵求逆中出现错误的简单例子。根据你的情况改一下。
我用了你的例子,程序运行很好,非常感谢!

使用道具

报纸
qoiqpwqr 发表于 2014-1-11 20:10:36 |只看作者 |坛友微信交流群
zs2k 发表于 2014-1-11 14:28
我用了你的例子,程序运行很好,非常感谢!

使用道具

地板
nuomin 发表于 2014-1-14 08:21:21 |只看作者 |坛友微信交流群
qoiqpwqr 发表于 2014-1-11 00:46
这是一个忽略矩阵求逆中出现错误的简单例子。根据你的情况改一下。
学习了

使用道具

7
yywan0913 在职认证  发表于 2014-1-15 11:31:09 |只看作者 |坛友微信交流群
try(expr,silenct=TRUE)   的确。。
是什么给了你自信

使用道具

8
asdasdaseee 发表于 2014-2-7 18:13:49 |只看作者 |坛友微信交流群
qoiqpwqr 发表于 2014-1-11 00:46
这是一个忽略矩阵求逆中出现错误的简单例子。根据你的情况改一下。
学习学习

使用道具

9
天斯吾下 学生认证  发表于 2015-7-11 15:47:51 |只看作者 |坛友微信交流群
qoiqpwqr 发表于 2014-1-11 00:46
这是一个忽略矩阵求逆中出现错误的简单例子。根据你的情况改一下。
您好!
我用这段代码仿写的就有问题,我的目的是批量下载网上的文件,但是链接有一部分是错误的,所以我把没有下载成功的文件名存为csv文件,保存在temp目录下
请您帮我看一下
my.list1 <-readLines("rtest1.txt")   这是30个下载地址
my.list2 <-readLines("rtest2.txt")   这是30个我要下载的文件的文件名
for (i in 1:30) {
aa <- paste(my.list2,".csv",sep="")
bb <-paste("e:\temp\", aa)
x <-try(download.file(my.list1, aa), silent=TRUE)
if ('try-error' %in% class(x)) next write.csv(my.list2, file = bb)
else download.file(my.list1, aa)
}

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-28 01:41