r级错误递归索引在级别2矩阵处失败

时间:2016-05-25 07:55:34

标签: r recursion matrix

矩阵书的行存储纬度,经度在第2列和第3列以及第6列到第n列存储距离第一列600米以内的点的索引。在下面的代码中,我试图检查第i行中的任何点是否在第j个点的范围内。如果是这样,那么我将追加两行的索引。但在这样做时,我收到错误Error in *tmp*[[j]] : recursive indexing failed at level 2 这是数据集

   vehicle_id  longt  latit  date   B B B B B B B B B B B B B B B
1    19967   86.2885 23.8210   27   3 1 2 6 0 0 0 0 0 0 0 0 0 0 0
2    19967   86.2891 23.8200   27   2 2 6 0 0 0 0 0 0 0 0 0 0 0 0
3    19967   86.5343 23.8254   27   1 3 0 0 0 0 0 0 0 0 0 0 0 0 0
4    19967   86.7273 23.8200   27   1 4 0 0 0 0 0 0 0 0 0 0 0 0 0
5    19967   86.1362 23.7538   28   1 5 0 0 0 0 0 0 0 0 0 0 0 0 0
6    19967   86.2839 23.8212   28   1 6 0 0 0 0 0 0 0 0 0 0 0 0 0

  B B B B B B B B B B B B B
1 0 0 0 0 0 0 0 0 0 0 0 0 0
2 0 0 0 0 0 0 0 0 0 0 0 0 0
3 0 0 0 0 0 0 0 0 0 0 0 0 0
4 0 0 0 0 0 0 0 0 0 0 0 0 0
5 0 0 0 0 0 0 0 0 0 0 0 0 0
6 0 0 0 0 0 0 0 0 0 0 0 0 0

我想知道为什么我会得到这个错误,我怎么能解决它。??? /

S=0
for(i in 1:(nrow(book)-1))
{        

  if( book[i, 1] != book[i+1,1]  )
  {
    next
  }





 for(j in i:nrow(book))
  {  

if(  book[i,1]!=book[j,1])
{    
  break           }


if(  book[i,1]==book[j,1] &  (book[i,5] > 2 ))
     {  for( k in 7:(5+book[i,5]))



  if(distm (c(book[book[i,k],3], book[book[i,k],2]), c(book[j,3], book[j,2]), fun = distHaversine) < 600)               
  {     S=book[i,5]+book[j,5]
    if (S-k > 0)
    {   B<- matrix(0,nrow(book),(S-k))
    book <- cbind(book,B)
    book[i,5]=book[i,5]+book[j,5]       
    } 


    book[i,(6+book[i,5]):((6+book[i,5])+book[j,5])] <- book[j,(6:(5+book[j,5]))]



  }



}


  }
 for( k in 7:(5+book[i,5]))

 {  if(i!=book[i,k])    
 {book[book[i,k],1]=0;
 }
 }






}

`

0 个答案:

没有答案