4

私はR言語でのループコーディングに取り組んでおり、このコードには2つの関数が含まれています。値がradiusの場合、radius関数の代わりにperiod関数を実行する必要があります。

クラスのメモを使ってコーディングしましたが、間違っていると思います。警告は表示されませんが、コンソールで警告が表示された場合:

R<-98
orbit(R)

このメッセージが表示されます:

Error in orbit(R) : attempt to apply non-function

これは私の関数コードです:

# Two functions: period and radius
# If a value you input is a period (in minutes), radius function should be used (radius(R))
# If a value you input is a radius (in km), period function should be used (period(R))
#   R is radius in km or period in minutes


orbit <- function(R){
    G <-6.673*10^-11
    M <- 5.972*10^24 # in kg

    if(R == 98){
            omega <- 2*pi/R # pr is period for one rotation

            Radi <- (G*M/omega^3)(1/3)
            print(Radi)
        }
    else {

        Peri <- 2*pi*sqrt(R^3/G*M)
        print(Peri)

    }

}

ifandelseステートメントを完全に理解しているとは思いません。誰かが私のためにそれを説明しますか?また、forステートメントとifステートメントの違いは何ですか?

助けてくれてありがとう。

4

1 に答える 1

5

この行の問題

Radi <- (G*M/omega^3)*(1/3)

*操作が足りないところ

if/else statementプログラムが、ある条件に基づいて実行するコードを決定できるようにします。コードと同様に、2つのコードブロックがあります。最初のブロックは次のとおりです。

omega <- 2*pi/R # pr is period for one rotation
Radi <- (G*M/omega^3)(1/3)
print(Radi)

これは、ある条件が真の場合にのみ実行したいものですR == 98。そうでない場合は、他のコードブロックを実行します。

for statementコードのブロックを何度も繰り返し実行する場合に使用します。からの数字を印刷したいとしましょう。100回1-100書くのは現実的ではありません!print(1) print(2)

これは、単純なforループで行います。

for(i in 1:100){
   print(i)
}
于 2013-02-11T23:57:22.067 に答える