为什么在R打印“no”中声明ifelse(i == 1,print(“yes!”),print(“no。”))两次?

时间:2016-03-02 08:57:34

标签: r if-statement printing

当我在Rstudio控制台中使用R时,我遇到了一些困惑:

i <- 0
ifelse(i == 1,print("yes!"),print("no."))
## [1] "no."
## [1] "no."

但是当我尝试非功能时,它只打印一次:

i <- 0
ifelse(i == 1, i + 1, i + 2)
## [1] 2 

为什么Rstudio在高级情况下打印两次而不是一次?有什么区别?

3 个答案:

答案 0 :(得分:2)

print有两件事:

  • 打印参数
  • 返回参数

如果您只是在控制台上写下print(“a”),则不会显示返回值。

但如果你写

a = print("a")
a

您会看到两个值。

答案 1 :(得分:0)

这是因为print("hello")(比方说)不仅在输出流上打印hello而且还返回hello。我希望它有所帮助。

答案 2 :(得分:0)

我在RStudio中玩这个:

i <- 0
a <- 'yes'
b <- 'no'
ifelse(i == 1, a, b)
[1] "no"

ifelse(i == 1, 'yes', 'no')
[1] "no"

显式定义包含要返回的值的变量,或者指示ifelse中的特定值(字符串,整数,浮点数)返回特定值。