運算符是R語言中最基礎的存在,熟悉運算符的使用,是熟練使用R處理數據的基礎,操作符,顧名思義,是對數據進行運算的符號,R有自己的一套操作符,實現變量的賦值,引用,運算等功能。
一,賦值符號
為變量賦值,推薦使用 var <- expression, 把var設置為expression的值,該賦值符號有方向性。
為參數傳值,使用 = ,R把等號右側表達式的值計算出來,賦值給等號右側的變量。
二,作用域引用符
作用域引用符:: 用於引用包中的對象。當載入多個包時,后載入的包,會把之前包中的同名函數覆蓋。
dplyr::bind
通常情況下,引用包中的對象,都會省略package::,而不會產生問題。
三,運算符
R的運算符分為三類:算術運算符,邏輯運算符和位運算符。
1,算術運算符
基本算術運算符:加(+),減(-),乘(*),除(/),負數(-)
冪運算:^ 或 **
整除操作符%/%,該操作符的兩側是整數,返回的結果是整數,不足1的小數取整為0:
> 1%/%3 [1] 0 > 5%/%3 [1] 1
取模操作符 %%,該操作符的兩次是整數,返回的結果是整數,求整除的余數:
> 5%%3 [1] 2
2,邏輯運算符
用於對表達式執行邏輯運算的運算符,返回的結果是布爾值:
- 大於:>
- 小於:<
- 大於或等於:>=
- 小於或等於:<=
- 等於:==
- 不等於:!=
用於對布爾值進行邏輯運算的運算符:
- 與:x & y
- 或:x | y
- 非:! x
- 判斷是否為真:isTURE(x)
- 判斷是否為假:isFALSE(x)
- 判斷是否不等:xor(x,y), 兩個操作數不等時返回TRUE,相等時返回FALSE。
- 長格式的邏輯運算符:&&, ||
“&”和“|”作用在對象中的每一個元素上並且返回和比較次數相等長度的邏輯值;“&&”和“||”只作用在對象的第一個元素上。
對於邏輯與的運算,&& 和 &的不等:
> x <- c(T,T,F) > y <- c(F,T,F) > x&&y [1] FALSE > x&y [1] FALSE TRUE FALSE
對於邏輯或的運算:
> x <- c(T,T,F) > y <- c(F,T,F) > x|y [1] TRUE TRUE FALSE > x||y [1] TRUE
3,all()和any()
判斷數據中是否存在TRUE值,其中all()是在全部為TURE時返回T,any是在存在任何一個TRUE時返回TRUE。
參數na.rm:是布爾類型,用於指定是否刪除NA值。
all(x, na.rm=T)
4:位運算符
按照數值的bit對操作數(整數類型)進行位運算,返回的結果是整數值:
- 按位與:bitwAnd(a, b)
- 按位或:bitwOr(a, b)
- 異或:bitwXor(a, b)
- 按位取反:bitwNot(a)
- 按位左移:bitwShiftL(a, n)
- 按位右移:bitwShiftR(a, n)
四,運算符的向量特性
不同於其他語言,R中的運算符具有向量特性,可以對向量的元素執行向量運算:
# An example
x <- c(1:10) x[(x>8) | (x<5)] # yields 1 2 3 4 9 10 # How it works x <- c(1:10) x 1 2 3 4 5 6 7 8 9 10 x > 8 F F F F F F F F T T x < 5 T T T T F F F F F F x > 8 | x < 5 T T T T F F F F T T x[c(T,T,T,T,F,F,F,F,T,T)] 1 2 3 4 9 10
1、向量化(逐個元素循環操作)
例:y=1:10; y+1; sqrt(y);
2、兩個不等長的向量,短向量循環填充到長向量中
例:x=1:3; y=1:10; z=x+y
注意:當兩個變量長度不是整倍數的關系,會有警告信息。
五,formula 操作符
常用於ggplot2包中,是formula函數的等價方式:
a ~ b+c
六:匹配符
匹配符 % in % 是match()函數等價方式,返回一個布爾值的向量:
x %in% table match(x, table, nomatch = NA_integer_, incomparables = NULL)
七,通道符
用於dplyr包中,把數據集傳遞給下一個函數使用:
df %>% mutate()
八,其他操作符
- $ 根據名字(name)獲取字段值
- [], [[]] 索引
- : 序列
參考文檔: