1. 程式人生 > >R:算術和邏輯運算子及數值

R:算術和邏輯運算子及數值

R語言基本運算子

  運算子

            描述

  x + y

   加法

  x - y

   減法

  x * y

   乘法

  x / y

   除法

  x ^ y

   乘冪

  x %% y

   模運算

  x %/% y  

   整數除法

  x == y

   判斷是否相等

  x <= y

   判斷是否小於等於

  x >= y

   判斷是否大於等於

  x && y

   標量的邏輯“與”運算

  x || y

   標量的邏輯“或”運算

  x & y

   向量的邏輯“與”運算(x、y以及運算結果都是向量)                                    

  X | y

   向量的邏輯“或”運算(x、y以及運算結果都是向量)

  !x 

   邏輯非

    R語言表面上沒有標量的型別,因為標量可以看作是含有一個元素的向量,但我們看到表中,邏輯運算子對標量和向量有著不同的形式,這雖然看起來很奇怪,但這種區別很有必要。

> x <- c( TRUE, FALSE, TRUE )

> y <- c( TRUE, TRUE, FALSE )

> x & y

[1]  TRUE FALSE FALSE

> x[1] && y[1]

[1] TRUE

> x && y

[1] TRUE

> if( x[1] && y[1] )   print( "both TRUE" )

[1] "both TRUE"

> if( x & y )   print( "both TRUE" )

[1] "both TRUE"

Warning message:In if (x & y) print("both TRUE") :  the condition has length > 1 and only the first element will be used

    問題的關鍵在於,if結構條件判斷語句的取值,只能是一個邏輯值,而不是邏輯值的向量,這也是為什麼前面這個例子會出現警告提示,因此“&”和“&&”這兩種運算子的存在是有必要的。

    邏輯值TRUE和FALSE可以縮寫為T和F(兩者都必須大寫),而在算術表示式中,它們會轉換為1和0。

> 1 < 2

[1] TRUE

> ( 1 < 2 ) * ( 3 < 4 )

[1] 1

> ( 1 < 2 ) * ( 3 < 4 ) * ( 5 < 2 )

[1] 0

> ( 1 < 2 ) == TRUE

[1] TRUE

> ( 1 < 2 ) == 1

[1] TRUE

►建立自己的二元運算子

    可以建立自己的二元運算子,只要寫一個名稱是以%開始和結束的函式。函式的兩個引數都是某種資料型別,並返回同樣型別的值。

> "%a2b%" <- function( a, b ){

+     return ( a + 2 * b )

+ }

> 3 %a2b% 5

[1] 13