2016-03-02 3 views
0

Когда я использую R в Rstudio консоли, я столкнулся некоторые неурядицы:Зачем нужна инструкция ifelse (i == 1, print («yes!»), Print («no.»)) В R print «no». дважды?

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 печать в два раза, а не один раз в верхней ситуации? Какая разница ?

+1

из-за печати: в первом случае он дает вам ответ, а затем печатает его, во втором он просто дает вам ответ – Cath

+1

Это неправильное использование 'ifelse'. Используйте 'if (i == 1) print (« yes! ») Else print (« no. »)'. – Roland

+0

@Cath да, спасибо – Eli

ответ

2

печать делает две вещи:

  • Он печатает параметр
  • возвращает параметр

Если вы просто пишете печать («A») на консоли, возвращаемое значение не показано.

Но если вы пишете

a = print("a") 
a 

Вы видите оба значения.

+0

Ничего себе так быстро! большое спасибо, может быть, мне нужно узнать больше информации о r. – Eli

0

Это потому, что print("hello") (скажем) не только печатает hello по выходному потоку, но также возвращает hello. Надеюсь, это было полезно.

+0

ваш ответ знаком с @fafi, спасибо тоже: D – Eli

+0

что делать, если функция? 'if' (i == 1, print (" yes! "), print (" no. "))' from "Advanced R" by Hadley Wickham онлайн Eli

+0

Может ли 'if' иметь переменное назначение позади? – Eli

0

Я играл вокруг с этим в RStudio:

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

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

Либо явно определить переменную, содержащие значения для возврата, или с указанием конкретного значения (строка, целое число с плавающей точкой) в пределах ifelse возвращает определенное значение ,