为什么我们可以在ifelse()
或else if(){}
声明中使用with()
而不是within()
?
我听说第一个是可矢量化而不是后者。这是什么意思?
答案 0 :(得分:13)
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
。
答案 1 :(得分:9)
回答你的第二部分:
* 当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
当x的长度为1但y的长度大于1时使用ifelse
ifelse (x < y,x,y)
[1] 4 4 4 3 4