我有一个矢量 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))
但这似乎不起作用。 我做错了什么?
答案 0 :(得分:1)
我知道这个答案已经得到了解答,但我认为最好避免在可能的情况下嵌套多个ifelse()
次呼叫(尽管两次并不太糟糕)。我会重构你正在做的事情并说在区间[-2,2]中返回任何内容,否则返回-1
或1
。
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)))