語言的數學運算和一些簡單的函數整理如下:向量可以進行那些常規的算術運算,不同長度的向量可以相加,這種情況下最短的向量將被迴圈使用。> x a x * a[1] 10 20 30 40> x + a[1] 11 12 13 14> sum(x) #對x中的元素求和[1] 10> prod(x) #.....
語言的數學運算和一些簡單的函數整理如下: 向量可以進行那些常規的算術運算,不同長度的向量可以相加,這種情況下最短的向量將被迴圈使用。 > x <- 1:4 > a <- 10 > x * a [1] 10 20 30 40 > x + a [1] 11 12 13 14 > sum(x) #對x中的元素求和 [1] 10 > prod(x) #對x中的元素求連乘積 [1] 24 > prod(2:8) #8的階乘 [1] 40320 > prod(2:4) #4的階乘 [1] 24 > max(x) #x中元素的最大值 [1] 4 > min(x) #x中元素的最小值 [1] 1 > which.max(x) #返回x中最大元素的下標 [1] 4 > which.min(x) #返回x中最小元素的下標 [1] 1 > x <- 4:1 #對向量x重新賦值 > x [1] 4 3 2 1 > which.min(x) [1] 4 > which.max(x) [1] 1 > range(x) #與c(min(x), max(x))作用相同 [1] 1 4 > mean(x) #x中元素的均值 [1] 2.5 > median(x) #x中元素的中位數 [1] 2.5 > var(x) #x中元素的的方差(用n-1做分母) [1] 1.666667 > x [1] 4 3 2 1 > rev(x) #對x中的元素取逆序 [1] 1 2 3 4 > sort(x) #將x中的元素按升序排列; [1] 1 2 3 4 > x [1] 4 3 2 1 > cumsum(x) #求累積和,返回一個向量,它的第i個元素是從x[1]到x[i]的和 [1] 4 7 9 10 > cumsum(rev(x)) [1] 1 3 6 10 > y <- 11:14 > pmin(x,y) #返回一個向量,它的第i個元素是x[i], y[i], . . .中最小值 [1] 4 3 2 1 > x <- rev(x) #重新賦值 > pmin(x,y) [1] 1 2 3 4 > pmax(x,y) #返回一個向量,它的每個元素是向量x和y在相應位置的元素的最大者 [1] 11 12 13 14 > cumprod(x) #求累積(從左向右)乘積 [1] 1 2 6 24 > cummin(x) #求累積最小值(從左向右) [1] 1 1 1 1 > cummax(x) #求累積最大值(從左向右) [1] 1 2 3 4 > match(x, y) #返回一個和x的長度相同的向量,表示x中與y中元素相同的元素在y中的位置(沒有則返回NA) [1] NA NA NA NA > y[c(2,4)] <- c(2,4) > y [1] 11 2 13 4 > match(x, y) [1] NA 2 NA 4 na.omit(x)函數忽略有缺失值(NA)的觀察數據(如果x是矩陣或數據框則忽略相應的行) > na.omit(match(x,y)) [1] 2 4 attr(,"na.action") [1] 1 3 attr(,"class") [1] "omit" > na.fail(match(x,y)) #na.fail(x) 如果x包含至少一個NA則返回一個錯誤消息 錯誤於na.fail.default(match(x,y)) : 對象里有遺漏值 which()函數返回一個包含x符合條件(當比較運算結果為真(TRUE)的下標的向量,在這個結果向量中數值i說明x[i] == a(這個函數的參數必須是邏輯型變數) > which( x == 2) [1] 2 > which( x <= 2) [1] 1 2 求組合數 > choose(4,2) [1] 6 > choose(3,1) [1] 3 > choose(-3,1) [1] -3 > choose(-4,2) [1] 10 > y <- c(1:4, rep(4,1)) > y [1] 1 2 3 4 4 > unique(y) #如果y是一個向量或者數據框,則返回一個類似的對象但是去掉所有重覆的元素(對於重覆的元素只取一個) [1] 1 2 3 4 > table(y) #返回一個表格,給出y中重覆元素的個數列表(尤其對於整數型或者因數型變數) y 1 2 3 4 1 1 1 2 > subset(x, x>2) #返回x中的一個滿足特定條件...的子集 [1] 3 4 > sample(x, 2) #從x中無放回抽取size個樣本,選項replace= TRUE表示有放回的抽樣 [1] 1 2 > sample(x, 2, replace = TRUE) #有放回的抽樣 [1] 2 3 R中用來處理數據的函數太多了而不能全部列在這裡。讀者可以找到所有的基本數學函數(log, exp, log10, log2, sin, cos, tan, asin, acos, atan, abs, sqrt,. . . ), 專業函數(gamma,digamma, beta, besselI, . . . ),同樣包括各種統計學中有用的函數。