楼主: athenachuxl
3877 2

[问答] 请问在循环语句中值缺失的情况要怎么处理? [推广有奖]

  • 0关注
  • 0粉丝

高中生

72%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
201 点
帖子
17
精华
0
在线时间
27 小时
注册时间
2011-10-10
最后登录
2019-11-4

楼主
athenachuxl 发表于 2015-5-19 17:31:23 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
xx<-function(x,boards) {
  n<-length(x)
  v<-data.frame()
  p<-length(x[[1]])
  for (i in 2:n) {
    if (any(x[(p-boards):p,i]<9.8)) next
    v<-c(v,x[i])
  }
  return(v)
}

test<-function(x,boards,count) {
  n<-length(x[[1]])
  v<-NULL
  for (i in boards:(n-count)) {
    y<-x[1:i,]
    yy<-xx(y,boards)
    nn<-length(yy)
    vv<-NULL
    for (ii in 1:nn) {
      yyy<-yy[[1]]
      p<-i
    repeat {
     p<-p+1
     if (yyy[p]<9.8) break
    }
    t<-p+count
    vv<-c(vv,yyy[t])
  }
  v<-c(v,vv)
}
return(mean(v))
}

数据是这样的:
> str(x)
'data.frame':        21 obs. of  2717 variables:
$ X         : Factor w/ 21 levels "2015/4/20","2015/4/21",..: 1 2 3 4 5 6 7 8 9 17 ...
$ X000001.SZ: num  -3.72 1.6 2.36 -1.71 -3.12 ...
$ X000002.SZ: num  -3.136 1.9 2.762 -0.806 -2.304 ...
$ X000004.SZ: num  -5.46 3.03 1.92 2.97 2.22 ...
$ X000005.SZ: num  0 0 0 0 0 0 0 0 0 0 ...
$ X000006.SZ: num  2.089 7.07 2.519 -0.593 -2.984 ...
$ X000007.SZ: num  -3.54 0.93 3.88 4.34 6.94 ...
$ X000008.SZ: num  0 0 0 0 0 0 0 0 0 0 ...
$ X000009.SZ: num  -3.869 2.236 4.046 9.984 0.764 ...
$ X000010.SZ: num  0 0 0 0 0 0 0 0 0 0 ...
$ X000011.SZ: num  -1.06 1.54 3.1 -3.39 -3.11 ...
$ X000012.SZ: num  0 0 0 10 10 ...
$ X000014.SZ: num  -3.09 1.46 5.78 -1.66 -2.58 ...

运行后变成这样:
test(x,3,1)
Error in if (yyy[p] < 9.8) break : missing value where TRUE/FALSE needed

想请问这种值缺失的情况要怎么处理呢,本来是想找不到<9.8的值就将此值忽略,但不知道怎么编。请教请教
二维码

扫码加我 拉你入群

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

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

关键词:循环语句 怎么处理

沙发
小飞碟 发表于 2015-5-19 21:50:16
考虑一下trycatch函数,可以自动跳过错误,,
但可能和你这种函数好像不一样,我使用的时候,是在读取数据的时候,如果出现错误就自动跳过,,

藤椅
fongwoo 发表于 2015-11-29 10:51:22
也遇到类似问题,我的函数如下:
StochApprom=function(theta,feasiblespace,u,t,z,c){
  for (k in 1:10000){
    gradient=SGrad(theta,u,t,z,c)
    a_k=0.001/k # step size is tunable
    theta=theta-a_k*gradient
    for (i in 2:length(theta)){
      if (theta[i]<feasiblespace[1,i-1]) {
        theta[i]=feasiblespace[1,i-1]
      } else if (theta[i]>feasiblespace[2,i-1]) {
        theta[i]=feasiblespace[2,i-1]
      }
    }
  }
  theta
}

调用出错如下:
> StochApprom(theta,fsblsp,u,t,z,c)
Error in if (theta[i] < feasiblespace[1, i - 1]) { :
  missing value where TRUE/FALSE needed

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

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