Ifelse有上下间隔

时间:2013-10-15 09:14:30

标签: r

我有一个矢量 x<-rnorm(100)

我想申请以下条件:

if any element of x is larger than 2    -> 1.

if any element of x is smaller than -2  -> -1.

otherwise keep x.

我试过了:

ifelse(x>2,1, ifelse(x<-2,-1),x))

但这似乎不起作用。 我做错了什么?

2 个答案:

答案 0 :(得分:1)

我知道这个答案已经得到了解答,但我认为最好避免在可能的情况下嵌套多个ifelse()次呼叫(尽管两次并不太糟糕)。我会重构你正在做的事情并说在区间[-2,2]中返回任何内容,否则返回-11

ifelse(x >= -2 & x <= 2, x, sign(x))

sign()会为{+ 1}}提供负数,-1为肯定。

答案 1 :(得分:0)

ifelse语句的格式为ifelse(condition, true, false)。您希望第二个ifelse位于false位置,因此请将完整的ifelse放在那里:

ifelse(x>2, 1, ifelse(x<-2,-1,x)))