簡體   English   中英

在R中將if和else語句與for循環一起使用

[英]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)

如果你想指望它們加起來還是看applylapply用於更復雜的情況,這取決於你在做什么的上下文。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM