R 一个'if'语句可以有多个'then'语句吗?

R 一个'if'语句可以有多个'then'语句吗?,r,R,如果语句有多个那么语句,那么语句是否可以 # 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)

如果
语句有多个
那么
语句,那么
语句是否可以

# 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)  }
#这很有效

a您需要将每条语句放在单独的行中(由
分隔),并将整个执行块括在大括号内

for(i in 1:10) { if(f[i]==2) {d[i]= 100; e[i]= -99}  }

您需要将每条语句放在单独的一行中(由
分隔),并将整个执行块括在大括号内

for(i in 1:10) { if(f[i]==2) {d[i]= 100; e[i]= -99}  }

您可能将
if
-表达式(也称)与
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

您可能将
if
-表达式(也称)与
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

是的,你可以像其他人提到的那样。如果您将内容放在新行上并使用缩进约定,也会更清楚。例如,我可能会像这样编写您的代码

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
    }
}

a是的,你可以像其他人提到的那样。如果您将内容放在新行上并使用缩进约定,也会更清楚。例如,我可能会像这样编写您的代码

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
    }
}

我不知道你想问什么。尝试只发布您需要帮助的代码;前三行在两个代码框中都是相同的。我不知道你想问什么。尝试只发布您需要帮助的代码;前三行在两个代码框中是相同的。我现在没有更具体的问题。多个“then”语句加上一个“if”的问题是我一直在想的。我也会记住“which”方法。谢谢你们两位出色的回答。@MarkMiller呃。。。我可以问你一个私人问题吗?你能告诉我你的编程语言背景吗?R是你的第一种编程语言吗?这对于我深入理解您的问题以及适当改进R文档非常重要。我对Fortran、BASIC、R、C、OpenBUGS和SAS有一定的经验。目前,我主要使用R和一些OpenBug,我正在学习更多关于C的知识。我开发和发布模型。然而,我不是任何语言的专家。这就是为什么我如此喜欢这个网站。我希望这有帮助。我现在没有更具体的问题。多个“then”语句加上一个“if”的问题是我一直在想的。我也会记住“which”方法。谢谢你们两位出色的回答。@MarkMiller呃。。。我可以问你一个私人问题吗?你能告诉我你的编程语言背景吗?R是你的第一种编程语言吗?这对于我深入理解您的问题以及适当改进R文档非常重要。我对Fortran、BASIC、R、C、OpenBUGS和SAS有一定的经验。目前,我主要使用R和一些OpenBug,我正在学习更多关于C的知识。我开发和发布模型。然而,我不是任何语言的专家。这就是为什么我如此喜欢这个网站。我希望这有帮助。