2017-12-29 23 views
-1

私はRには新しく、いくつかの地理的出力を持つ関数を作成しようとしています。私はいくつかのif/elseステートメントを含めてマップタイトルのような特定のパラメータのデフォルトを設定しようとしていますが、同じ問題が繰り返し発生しています。他の人たちも同じ問題を抱えていますが、彼らの質問が私を助けてくれたわけではありません。if/else文の中括弧での問題

以下は、私が直面しているエラーと同様に、私のコードの簡略版です。

my_function <- function(x, y, map.title, a, ...){ 
    neighbours <- spdep::poly2nb(x, queen=T, snap=T) 
    print("neighbours defined") 
    local <- spdep::localmoran(y, listw=nb2listw(neighbours, style="W")) 
    moran_map <- x 
    [email protected] <- cbind([email protected], local) 
    if(map.title = NULL) { 
    seg_map <- tmap::tm_shape(moran_map) + 
       tm_fill(col = "Ii", 
         style = "quantile", 
         title = "Local Moran's I Statistic") + 
       tm_layout(title = "Good Maps Have Titles") 
    return(map) 
} else { 
    seg_map <- tmap::tm_shape(moran_map) + 
        tm_fill(col = 'Ii', 
          style = 'quantile', 
          title = "Local Moran's I Statistic", 
          palette = a) + 
        tm_layout(title = map.title) 
    return(map) 
    } 
} 

次のエラーが発生します。

>Error: no function to return from, jumping to top level 

> } 
Error: unexpected '}' in " }" 

> } 
Error: unexpected '}' in " }" 

私が間違っていることを誰かが知っていますか?これをどのように修正できますか?

ありがとうございます!

+3

これはR: 'map.title = NULL'では動作しません。 'isnull()'を使ってください。 – Parfait

+3

そして、* map *はどこですか? 'return(seg_map)'を使ってください。 – Parfait

答えて

0

あなたがこれらのエラーを持って前に、あなたは1以前を持っていた:

+ if(map.title = NULL) { 
Error: unexpected '=' in: 
" [email protected] <- cbind([email protected], local) 
    if(map.title =" 

あなたがifテストで単一=を使用することはできません。通常は==を使用して値と等しいかどうかをテストしますが、NULLは特殊なので、ここではis.null(map.title)(ほとんどの場合、Parfaitのように)が必要です。

Rがそのステートメントでエラーを検出したとき、関数定義を停止してからやり直しました。後のステートメントは意味をなさないので、あなたはそれらのエラーを持っています。