if-statement涉及更大/更小的限制

时间:2016-03-02 19:29:15

标签: r if-statement matrix

我想编写一个if语句,将矩阵限制为区间(-1)为1.

输入:

alpha=matrix(c(-2,0.5,3,0.2,0.8,0.5,0.2,0.8,0.1),3,3)

因此导致

alpha>1
    [,1]  [,2]  [,3]
[1,] FALSE FALSE FALSE
[2,] FALSE FALSE FALSE
[3,]  TRUE FALSE FALSE

alpha<(-1)
    [,1]  [,2]  [,3]
[1,]  TRUE FALSE FALSE
[2,] FALSE FALSE FALSE
[3,] FALSE FALSE FALSE

我现在如何编程限制,将此处为TRUE的值设置为0.99和-0.99,如

if(alpha<(-1)){alpha[]=-0.99}
if(alpha>1){alpha[]=0.99}

这样alpha的输出就是

     [,1] [,2] [,3]
[1,] -0.99  0.2  0.2
[2,]  0.50  0.8  0.8
[3,]  0.99  0.5  0.1

如何编程(if)条件?

1 个答案:

答案 0 :(得分:3)

在赋值操作的左侧使用逻辑索引:

> alpha [ alpha < -1 ] <- -.99
> alpha [ alpha > 1 ] <- .99
> alpha
      [,1] [,2] [,3]
[1,] -0.99  0.2  0.2
[2,]  0.50  0.8  0.8
[3,]  0.99  0.5  0.1

R if不是一个很好的数据操作功能。学习使用[<-。花了很多时间阅读?"["。 R ifelse也很有用,但不一定适合矩阵运算。