全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
5296 3
2016-01-16
if (x[i-1]<=k*lambda[i-1])
  {eta[i]<-rnorm(1,rho0*sigma0*epsilon[i-1],sigma0*sqrt(1-(rho0)^2))
                   h[i]<-beta0+alpha0*h[i-1]+eta[i]
  }
  else {eta[i]<-rnorm(1,rho1*sigma1*epsilon[i-1],sigma1*sqrt(1-(rho1)^2)
              h[i]<-beta1+alpha1*h[i-1]+eta[i]}


运行时老是出错
> if (x[i-1]<=k*lambda[i-1])
+ {eta[i]<-rnorm(1,rho0*sigma0*epsilon[i-1],sigma0*sqrt(1-(rho0)^2))
+ h[i]<-beta0+alpha0*h[i-1]+eta[i]
+ }
> else {eta[i]<-rnorm(1,rho1*sigma1*epsilon[i-1],sigma1*sqrt(1-(rho1)^2)
Error: unexpected 'else' in "else"
> h[i]<-beta1+alpha1*h[i-1]+eta[i]}
Error: unexpected '}' in "h[i]<-beta1+alpha1*h[i-1]+eta[i]}"


二维码

扫码加我 拉你入群

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

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

全部回复
2016-1-16 20:55:09
你的else要跟在上一行那个大括号}的后面,不能另起一行。R因为不强制要求表达式末尾加分号,因此会以行尾作为标志来判断表达式是否结束。在if/else里,由于执行if TRUE的表达式体到大括号为止就结束了,并且是合法的表达式,那么R就会将else上方的部分作为完整的表达式单独执行;执行完成后再读入下一句 else,但是else自身当然不能作为一个表达式的开头,因此就会出现执行错误。
二维码

扫码加我 拉你入群

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

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

2016-1-17 15:38:42
suimong 发表于 2016-1-16 20:55
你的else要跟在上一行那个大括号}的后面,不能另起一行。R因为不强制要求表达式末尾加分号,因此会以行尾作 ...
明白了,谢谢你
二维码

扫码加我 拉你入群

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

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

2016-4-3 00:44:25
讲得真好,还顺带解决了大括号的报错。还从R的运行原理上认识了这个问题,学习了。
很谢谢呀
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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