9

为什么我们可以使用ifelse()但不能else if(){}inwith()within()语句?

我听说第一个是可矢量化的,而不是后者。这是什么意思 ?

4

2 回答 2

14

if构造仅在将向量传递给它时考虑第一个组件,(并给出警告)

if(sample(100,10)>50) 
    print("first component greater 50") 
else 
    print("first component less/equal 50")

ifelse函数对每个组件执行检查并返回一个向量

ifelse(sample(100,10)>50, "greater 50", "less/equal 50")

例如,该ifelse函数对 很有用transform。在条件和或中使用&或通常很有用。|ifelse&&||if

于 2013-06-22T16:51:15.197 回答
10

回答你的第二部分:

*当 x 的长度为 1 但 y 的长度大于 1 时使用*if

 x <- 4
 y <- c(8, 10, 12, 3, 17)
if (x < y) x else y

[1]  8 10 12  3 17
Warning message:
In if (x < y) x else y :
  the condition has length > 1 and only the first element will be used

ifelse当 x 的长度为 1 但 y 的长度大于 1 时使用

ifelse (x < y,x,y)
[1] 4 4 4 3 4
于 2013-06-22T16:49:55.130 回答