楼主: hopelesscat
8350 1

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

  • 0关注
  • 1粉丝

高中生

77%

还不是VIP/贵宾

-

威望
0
论坛币
14 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
489 点
帖子
20
精华
0
在线时间
35 小时
注册时间
2009-12-12
最后登录
2016-2-27

25论坛币
      我用r语言编制了进行ADF检验的函数循环,这个函数有两个未知参数,我需要设定一定的参数值空间,然后以0.01为精度,对每组可能的参数值计算出的序列进行ADF检验,然后将p值小于5%的参数值挑选出来。      但是在实际运行过程中,总是提示warning,大致意思是实际的p值小于显示的p值,一旦warning出现,循环就无法继续运行下去了。
       想求助大家,有没有什么语句可以忽略warning,比如   if(warning出现){函数返回0}  之类的,谢谢大家了!

      我的代码如下,初学r,写的不好,大家见笑了,也请高手帮忙指正!

   adftest=matrix(0,nrow=1101,ncol=151)              ###ADF检验结果返回矩阵

    adfczs<-function(params)                                    ###ADF检验函数                  
{
  tildeTc=exp((params[1]-log(data[,2]))/params[2])+data[,1]
  hatTc=sum(tildeTc)/length(t(tildeTc))
  tildetc=tildeTc-hatTc
  adf<-adfTest(tildetc,type="nc")
  adfpvalue=0
  if(adf@test$p.value<0.05){adfpvalue=1}
  return(adfpvalue)
}                                                                                ###在95%的水平下平稳则返回1,否则返回0

lnk<-seq(from=10,to=21,by=0.1)                             ###参数值空间      
beta<-seq(from=0.5,to=2,by=0.1)

i=1                                                                           
j=1

while(i<=1101)
{
  while(j<=151)
    {adftest[i,j]=adfczs(c(lnk[i],beta[j]))
    }
}                                        ###对参数值空间里的每一组值代入adfczs函数中计算,然后将值返回到矩阵adftest中




关键词:warning Warn ning ING War 忽略warning
沙发
jiangbeilu 学生认证  发表于 2016-2-24 20:09:35 |只看作者 |坛友微信交流群
  1. length(beta)
  2. length(lnk)
复制代码

这两个值,依次是16,111
而你要提取的循环数,已经超过了,当然不能用。lnk[120]这个数据就不存在,程序当然报错。

另外,我运行的时候,出现的是error,不是warnings啊。如果出现的是warnings,程序是可以继续运行的。
你可以先进行一个判定,然后用stop或者break函数跳出判断或循环。

使用道具

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

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

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

GMT+8, 2024-4-30 18:19