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