生成输出时出错

时间:2015-10-12 03:37:42

标签: r

我的代码有问题。我无法追踪错误。我有如下的coor数据(40乘2矩阵)和降雨数据(146×40矩阵)。

No Longitude Latitude    
1     100.69     6.34  
2     100.77     6.24  
3     100.39     6.11  
4     100.43     5.53  
5     100.39     5.38  
6     101.00     5.71  
7     101.06     5.30  
8     100.80     4.98  
9     101.17     4.48  
10    102.26     6.11  
11    102.22     5.79  
12    102.28     5.31  
13    102.02     5.38  
14    101.97     4.88  
15    102.95     5.53  
16    103.13     5.32  
17    103.06     4.94  
18    103.42     4.76  
19    103.42     4.23  
20    102.38     4.24  
21    101.94     4.23  
22    103.04     3.92  
23    103.36     3.56  
24    102.66     3.03  
25    103.19     2.89  
26    101.35     3.70  
27    101.41     3.37  
28    101.75     3.16  
29    101.39     2.93  
30    102.07     3.09  
31    102.51     2.72  
32    102.26     2.76  
33    101.96     2.74  
34    102.19     2.36  
35    102.49     2.29  
36    103.02     2.38  
37    103.74     2.26  
38    103.97     1.85  
39    103.72     1.76  
40    103.75     1.47  

降雨量= 14610×40矩阵; coor = 40乘2矩阵

my_prog=function(rainrain,coordinat,misss,distance)
{
  rain3<-rainrain              # target station i**

  # neighboring stations for target station i
  a=coordinat                  # target station i**
  diss=as.matrix(distHaversine(a,coor,r=6371))
  mmdis=sort(diss,decreasing=F,index.return=T)             
  mdis=as.matrix(mmdis$x)
  mdis1=as.matrix(mmdis$ix)
  dist=cbind(mdis,mdis1)

  # NA creation
  # create missing values in rainfall data
  set.seed(100)
  b=sample(1:nrow(rain3),(misss*nrow(rain3)),replace=F) 
  k=replace(rain3,b,NA)

  # pick i closest stations
  neig=mdis1[distance]          # neighbouring selection distance

  # target (with NA) and their neighbors
    rainB=rainfal00[,neig]
    rainA0=rainB[,2:ncol(rainB)]
    rainA<-as.matrix(cbind(k,rainA0))   

    rain2=na.omit(rainA)
    x=as.matrix(rain2[,1])  # used to calculate the correlation              
    n1=ncol(rainA)-1

    #1) normal ratio(nr)
    jum=as.matrix(apply(rain2,2,mean))
    nr0=(jum[1]/jum)  
    nr=as.matrix(nr0[2:nrow(nr0),])            
    m01=as.matrix(rainA[is.na(k),])
    m1=m01[,2:ncol(m01)]
    out1=as.matrix(sapply(seq_len(nrow(m1)), 
                          function(i) sum(nr*m1[i,],na.rm=T)/n1))


  print(out1)
}

impute=my_prog(rainrain=rainfall[,1],coordinat=coor[1,],misss=0.05,distance=mdis<200)

我运行了这段代码,获得的输出是:

Error in my_prog(rainrain = rainfal00[, 1], misss = 0.05, coordinat = coor[1,  : 
  object 'mdis' not found

我检查了程序,但无法追查问题。如果有人能帮助我,我真的很感激。

0 个答案:

没有答案