0

関数内で if else を使用する際に問題があります。私のコードは次のようになります。

ConvertWgtZooLS <- function(WgtZoo, LSWay, Pos){
    If(LSWay == 0){
      NewWgtZoo <- WgtZoo
    }else{
      BackPos <- BackMatrix(Pos,1)
      NewWgtZoo<- Ifelse((Sign(WgtZoo) * Sign(BackPos) * LSWay)>=0, WgtZoo, 0)
    }
    return(NewWgtZoo)
}

ただし、Rで実行すると、エラーメッセージが次のように表示されます。

"Error: unexpected '{' in:
"ConvertWgtZooLS <- function(WgtZoo, LSWay, Pos){
    If(LSWay == 0){"

どうすればこれを解決できますか? そこにある構文の問題は何ですか?私は多くのウェブサイトをチェックしましたが、else構文が正しい場合は上記のようです。

どうもありがとう!

4

1 に答える 1

4

コードのエラーは、If代わりにを使用したことでifあり、R では大文字と小文字が区別されます。したがって、 @danielkullmann が指摘するIfようifに、R が探しているのはまさにその関数です。

R が生成するエラー メッセージは常に最も役立つとは限りませんが、この場合、問題領域に非常に近いことを示しています。どこで「混乱」したかを示しますが、その理由を理解するのはあなた次第です!

Ifelse最初の問題を修正した後、6 行目に(同じ理由で) 別の問題が見つかりますifelse

最後にもう 1 つ: R はかなり空白に適しているため、特にifandelseステートメントでは、読みやすさを向上させるためにコードにスペースを残すことをお勧めします。理由は次のとおりです。

  1. if (LSWay == 0) {よりも読みやすいと思いますif(LSWay == 0){
  2. のような実際の関数を使用する場合、sum(x)通常はスペースを追加しないため、コードの大きなブロックでこれらの条件ステートメントを簡単に見つけることができます。

Google R Style Guideは、この点で興味深い読み物です。

于 2012-07-19T07:38:52.620 に答える