全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
3835 2
2015-05-19
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函数,可以自动跳过错误,,
但可能和你这种函数好像不一样,我使用的时候,是在读取数据的时候,如果出现错误就自动跳过,,

二维码

扫码加我 拉你入群

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

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

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
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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