2016-03-02 38 views
0

我想將程序if語句這限制了矩陣的間隔(-1)爲1if語句有關的限制更大/更小的

輸入:

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 

如何我現在PROGRAMM其中規定哪些這裏TRUE 0.99和-0.99像

012的值的限制

使得阿爾法的輸出是

 [,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)條件?

回答

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也是有用的,但不一定適用於矩陣運算。