R:根据范围条件更改矢量

时间:2014-01-07 10:58:30

标签: r if-statement vector range conditional-statements

我想根据条件更改矢量元素。 例如:我有一个向量v<-c(-3,5,-1,7,8,1,10,11),我希望生成向量(-1,1,0,1,1,0,1,1) 条件是

if the element is <-1 then set -1
if the element is >1 then set 1
otherwise 0

我可以通过使用一系列ifelse语句来实现这一点:

 v<-c(-3,5,-1,7,8,1,10,11)
    res<-rep(0,8)
    res<-ifelse(v<1,-1,res)
    res<-ifelse(v>1,1,res)

我认为应该有更优雅和紧凑的方式来做到这一点。 有什么建议吗?

感谢

2 个答案:

答案 0 :(得分:1)

sign(v) * (abs(v) > 1)
# [1] -1  1  0  1  1  0  1  1

答案 1 :(得分:0)

v[v >= -1 & v <= 1] = 0
v = sign(v)