从多个if语句返回结果

时间:2017-12-01 16:01:24

标签: r if-statement

我正在尝试在if语句中使用多个操作。例如:

x <- 1

if (x == 1) {
   paste("First")
   1*1                    #multiple actions
 } else if (x == 2) { 
   paste("Second")
   2*2 } else {("Nothing")
 }

 [1] 1        #what I'm getting

 [2] "First"
      1       #what I want to get

在这种情况下,只有表达式的第二部分被打印到控制台。 任何想法如何在 if else if 之间运行所有操作?

2 个答案:

答案 0 :(得分:3)

所有语句都按预期运行。如果满足所有这些条件,则语句的值仅打印到控制台:

  • 该值未保存到变量
  • 该值不是invisible
  • 它是表达式
  • 中最后一个语句的结果
  • R以交互模式运行

有时打印的原因是为了帮助人们在命令行中以交互方式浏览数据。只需输入print(x),他们就可以节省一些按键,而不是x类型。总之,如果您想确定它已打印,请使用print

x <- 1

if (x == 1) {
  print("First")
  print(1*1)
} else if (x == 2) {
  print("Second")
  print(2*2)
} else {
  invisible("Nothing")
}
# [1] "First"
# [1] 1

答案 1 :(得分:2)

您可以使用printcat

getResult <- function(x = 1) {
    if (x == 1) {
        cat("First", 1 * 1, "\n")
    } else if (x == 2) { 
        print("Second")
        print(2 * 2)
    } else {
        cat("Nothing\n")
    }
}


getResult()
# First 1 

getResult(2)
# [1] "Second"
# [1] 4