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的值就将此值忽略,但不知道怎么编。请教请教


雷达卡


京公网安备 11010802022788号







