R 生成输出时出错

R 生成输出时出错,r,R,我的代码有问题。我找不到这个错误。我有如下的coor数据(40 x 2矩阵)和降雨数据(14610 x 40矩阵) 降雨量=14610乘以40矩阵; coor=40×2矩阵 my_prog=function(rainrain,coordinat,misss,distance) { rain3<-rainrain # target station i** # neighboring stations for target station i a=coo

我的代码有问题。我找不到这个错误。我有如下的coor数据(40 x 2矩阵)和降雨数据(14610 x 40矩阵)

降雨量=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)

我已经检查了程序,但无法跟踪问题。如果有人能帮助我,我将不胜感激。

在代码的最后一行,您调用了
my_prog(…,distance=mdisb),但我在第8行定义了它(mdis=as.matrix(mmdis$x))您在函数内部定义了
MDI
,但您尝试在函数调用中使用它,这发生在您定义它之前。我明白了,但我不确定应该在哪里定义MDI。是否需要在函数外部定义它?
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