私はifステートメントで小さなコードを試していましたが、それは非常に単純ですが、ここで本当に混乱していることがコードです
n<-857
while(n!=1){
if(n<=0)
print("please input a positive integer")
else if(n%%2==0)
n<-n/2
print(n)
else
n<-3*n+1
print(n)
}
上記のように、このコードをRで実行するとエラーが発生しますが、ifステートメントを次のように変更すると
if(n<=0)
print("please input a positive integer")
else if(n%%2==0)
n<-n/2
else
n<-3*n+1
それは大丈夫です、私の質問は、各判断の下に1行しか記述できないということですか?各裁判官の後にさらに何かをしたい場合は、この場合と同様に、nの値を変更したいが、それを表示したい場合はどうすればよいですか?どうもありがとうございました
正確には、これは行ではなくstatementsについてです。 _if else
_ステートメント全体を1行で記述できます。
_> if (TRUE) 1 else 3
[1] 1
_
ステートメントは行の終わりで終了します(完了した場合)。コードを1行ずつ入力すると、インタラクティブモードでうまく表示されます。
_> if (TRUE)
+ 1
[1] 1
> else
Fehler: Unerwartete(s) 'else' in "else" # error: unexpected 'else' in "else"
> 3
[1] 3
_
if
はif (condition) statement
またはif (condition) statement else other.statement
の形式で提供されます。インタープリターは、ステートメントが行2の後に完了した場合、最初のバージョンが意図されていると想定します-インタラクティブモードでは、意図的に待つことができませんelse
が次に表示されるかどうか。これはsource
dコードでは異なります。次の行でそれがどの形式であるかがわかります。
セミコロンもステートメントを終了します:
_> if (TRUE) 1; else 3
[1] 1
Fehler: Unerwartete(s) 'else' in " else" # error: unexpected 'else' in "else"
_
ただし、条件の各ブランチで使用できるstatementは1つだけです。
_> if (TRUE) 1; 2 else 3
[1] 1
Fehler: Unerwartete(s) 'else' in " 2 else" # error: unexpected 'else' in "2 else"
_
中括弧はステートメントをグループ化して、1つのステートメントとして表示します。
_> if (TRUE) {1; 2} else 3
[1] 2
_
if
ステートメントに複数行を含めるには、{}
を使用する必要があります。これを試して:
n<-857
while(n!=1){
if(n<=0){
print("please input a positive integer")
}
else if(n%%2==0){
n<-n/2
print(n)
}
else {
n<-3*n+1
print(n)
}
}
ステートメントをグループ化するには、while
ループで行ったように、中括弧でステートメントを囲みます。
if(n<=0) {
print("please input a positive integer")
} else if(n%%2==0) {
n<-n/2
print(n)
} else {
n<-3*n+1
print(n)
}
これにより、if
、else if
、および最後のelse
内に複数のステートメントを配置できます。
直接的な答えは、すでに述べたように、中括弧を使用することです。
_<-
多くの関数への代入演算子。
あなたの特定のケースでは:
print(n <- 3*n+1)
## instead of
# n <- 3*n+1
# print(n)
=
ここでは[〜#〜] not [〜#〜]機能します。それは違いない <-
カーリーバースを聞いたことがありますか?
n<-857
while(n!=1){
if(n<=0) {
print("please input a positive integer")
} else if(n%%2==0) {
n<-n/2
print(n)
} else {
n<-3*n+1
print(n)
}
}