if
语句是否可以包含多个then
语句?
# this works
a <- c(1,2,3,4,5,6,7,8,9,10)
b <- c(4,3,5,2,8,9,1,2,2,4)
c <- c(9,9,9,5,5,5,2,2,2,1)
for(i in 1:10) { if(c[i]==2) a[i]= 100; if(c[i]==2) b[i]= -99 }
# this does not work
d <- c(1,2,3,4,5,6,7,8,9,10)
e <- c(4,3,5,2,8,9,1,2,2,4)
f <- c(9,9,9,5,5,5,2,2,2,1)
for(i in 1:10) { if(f[i]==2) (d[i]= 100 & e[i]= -99) }
答案 0 :(得分:4)
您需要将每个语句放在一个单独的行中(由;
分隔)并将整个执行块括在花括号中
for(i in 1:10) { if(f[i]==2) {d[i]= 100; e[i]= -99} }
答案 1 :(得分:3)
您可能会将if
- 表达式(a.k.a。ternary operators)与if
- 语句混淆。在后者中,您通常使用括号括起来的语句块,这些语句由分号或换行符分隔:
R> for(i in 1:10) if(f[i]==2) { d[i]= 100; e[i]= -99 }
R> d
[1] 1 2 3 4 5 6 100 100 100 10
R> e
[1] 4 3 5 2 8 9 -99 -99 -99 4
此外,这里有一个更快的等价物:
a[which(c==2)] = 100
b[which(c==2)] = -99
答案 2 :(得分:3)
是的,你可以像其他人提到的那样。如果你把东西放在新的行上并使用一些缩进惯例,那也更清楚了。例如,我可能会编写像
这样的代码a <- 1:10
b <- c(4, 3, 5, 2, 8, 9, 1, 2, 2, 4)
c <- c(9, 9, 9, 5, 5, 5, 2, 2, 2, 1)
for(i in 1:10){
if(c[i] == 2){
a[i] <- 100
b[i] <- -99
}
}