[英]Using an if and else statement with a for loop in R
我不確定我是否完全理解如何在for循環中使用if和else語句。 我的代碼如下所示:
> X
[1] 1 0 1 1 1
A=0
for (i in 1:5){
if (X[i]=1)
A=A+1
}
else{
A=A
}
例如,在這種情況下,向量X中有4個“ 1”。因此,對於向量中的每1個,我希望它向A的值加1。(所以A應該等於4)。
正如其他人提到的那樣: =
用於賦值(類似於<-
;有關詳細信息,請參見此處 ),而==
用於比較相等性。
您的最終循環應為:
for(i in X){
if (i == 1) A <- A + 1
}
您不需要else
子句,因為它實際上並沒有做任何事情,只是稍微降低了循環速度。
R是矢量化的,因此請使用該事實。 更加習慣地說:
sum(X)
如果你想指望它們加起來還是看apply
和lapply
用於更復雜的情況,這取決於你在做什么的上下文。
X <- c(1, 0, 1, 1, 1)
A <- 0
for (i in X){
if (i == 1)
A <- A + 1
else A <- A + 0
}
這是您所追求的:
for (i in 1:5){
if (X[i]==1){
A=A+1
}else{
A=A
}
}
請注意,與您的示例中將X[i]
設置為1
的單=
符號相比, X[i]==1
的double =
符號使您可以偽造布爾語句( X[i]
等於1
)
比較符號應為( X[i]==1
),並且使用if語句的方式很好。 但是您有多余的花括號,這使您的代碼混亂。
它應該看起來像這樣
X <- c(1,0,1,1,1)
A=0
for (i in 1:5){
if (X[i]==1)
A=A+1
else
A=A
}
或像這樣
X <- c(1,0,1,1,1)
A=0
for (i in 1:5){
if (X[i]==1){
A=A+1
}
else{
A=A
}
}
如果在if語句中只有一條指令,則不需要大括號,但是對於特定條件,如果要運行兩條以上的指令,則必須使用大括號。
縮進僅用於幫助可視化。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.