我不确定我是否完全理解如何在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的值。(所以A应该等于4)。
答案 0 :(得分:1)
正如其他人提到的那样:=
用于分配(类似于<-
;有关详情,请参阅here),==
用于比较相等。
你最后的循环应该是:
for(i in X){
if (i == 1) A <- A + 1
}
您不需要else
子句,因为它实际上没有做任何事情,只是稍微减慢了循环。
R是矢量化的,所以使用这个事实。说:
更为惯用sum(X)
如果您想全部计算它们,或者查看apply
和lapply
以了解更复杂的情况,具体取决于您正在执行的操作的上下文。
答案 1 :(得分:0)
X <- c(1, 0, 1, 1, 1)
A <- 0
for (i in X){
if (i == 1)
A <- A + 1
else A <- A + 0
}
答案 2 :(得分:0)
这就是你所追求的:
for (i in 1:5){
if (X[i]==1){
A=A+1
}else{
A=A
}
}
请注意,=
中的双X[i]==1
符号会为您提供可伪造的布尔语句(X[i]
等于1
),与单=
个符号相比较将X[i]
设为1
答案 3 :(得分:0)
比较符号应为(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语句中只有一条指令,则不需要大括号,但如果在特定条件下运行更多两条或更多条指令,则必须使用大括号。
缩进仅用于帮助可视化。