我想编写一个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)条件?
答案 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
也很有用,但不一定适合矩阵运算。