2017-11-21 15 views
4

私はポリゴンの大きなデータセットを持っており、ループを使って交差点を見つけて計算して保存しようとしています。私はtraceback()を使用しますが、私は実際にそれを理解することはできませんRのトレースバックを読むには

Error in RGEOSBinTopoFunc(spgeom1, spgeom2, byid, id, drop_lower_td, unaryUnion_if_byid_false, : 
    TopologyException: Input geom 0 is invalid: Ring Self-intersection at or near point 26.437120350000001 39.241770119999998 at 26.437120350000001 39.241770119999998 

:第八百七十の反復で、ループは停止し、私はエラーを取得する

4: .Call("rgeos_intersection", .RGEOS_HANDLE, spgeom1, spgeom2, 
     byid, ids, PACKAGE = "rgeos") 
3: RGEOSBinTopoFunc(spgeom1, spgeom2, byid, id, drop_lower_td, unaryUnion_if_byid_false, 
     "rgeos_intersection") 
2: gIntersection(combinations[[i]][[1, m]], combinations[[i]][[2, 
     m]]) at #17 . Can anyone explain what to look in ` traceback`? 

誰もが何がtracebackに見て私を説明できますか?

ありがとうございました

答えて

2

これは、関数の呼び出し方法とエラーの発生場所を文字通り示しています。私はa()を呼び出すとき

a <- function(x) { 
    b <- function(y) { 
    c <- function(z) { 
    stop('there was a problem') 
    } 
    c() 
    } 
    b() 
} 

:この例をチェックしてください

> a() 

Error in c() : there was a problem 
4. stop("there was a problem") 
3. c() 
2. b() 
1. a() 

を上記の例では、あなたがacと呼ばれ、その後cにエラーが発生したbと呼ばれていることがわかります。呼び出し環境を示します。

+0

私が間違っている場合、私はそれを修正してください。それは1.の一般的な機能から始まり、最後の呼び出し/番号(その場合は4.)でエラーを表示しますか?それは実際には機能全体が間違っていることを意味するものではありません。 –

+1

はい。それは1で始まり、壊れたところで4に達する。あなたの機能のどれが間違っているのかを言うのは難しいです。たぶん1で論理エラーが発生し、4の機能が失敗する可能性があります。構文的には、あなたの関数は壊れるまでうまく機能しますが。 – LyzandeR

+0

ありがとう、今私はそれが動作する方法を理解し、私は私の問題を解決しようとします。ありがとう! –