r语言 - 关于限制大于/小于的 if 语句



我想编写一个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}

因此,阿尔法的输出是

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

如何对(如果)条件进行编程?

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

> 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也很有用,但不一定适用于矩阵运算。

最新更新