Next: Generating regular sequences, Previous: Vectors and assignment, Up: Simple manipulations numbers and vectors
在算術運算式中使用向量將會對該向量的每一個 元素都進行同樣算術運算。出現在同一個運算式中的 向量最好是一樣的長度。如果他們的長度不一樣, 該運算式的值將是一個和其中最長的向量等長的 向量。運算式中短的向量 會被迴圈使用(recycled)(可能是 部分的元素)以達到最長的向量的長度。 對於一個常數就是簡單的重複。利用前面例子中的變數, 命令
> v <- 2*x + y + 1
將產生一個新的長度為11的向量 v。它由
2*x 重複2.2次,y 重複一次
1 重複11次得到的向量相加而成。
基本的算術運算符就是常用的+, -,
*, / 和做冪運算的^。
另外還包括常用的數學函數。如
log,exp,sin,cos,tan,sqrt
等等。這些在教科書上都有所定義。
max 和 min 分別給出一個向量的
最大值和最小值。
函數 range 得到的是一個長度為2的向量,即
c(min(x), max(x))。
length(x) 給出向量 x 的元素個數,
sum(x) 給出 x 中元素的累加和,
以及 prod(x) 得到它們的乘積。
兩個統計函數就是計算均值的 mean(x)
(等價於 sum(x)/length(x))
和計算樣本方差的 var(x)。var(x) 等價於
sum((x-mean(x))^2)/(length(x)-1)
如果 var() 的參數是一個
n×p 的矩陣,則將該矩陣行與行之間看作是相互獨立的
p-變數的樣本向量,從而得到一個 p×p 的
樣本協方差矩陣。
sort(x) 返回一個和 x 長度一樣但
元素以昇冪排列的向量;當然,還有其他功能更強大的
排序函數(如可以隨意排列的 order() 和
sort.list()等)。
注意 max 和 min 將會給出它們參數向量
中的最大和最小值。在同時給予多個向量的情況下,這兩個函數會把參數向量合併成一個向量處理。
並行(parallel)求解最大和最小值的函數 pmax 和
pmin 將會返回一個和最長的參數長度一致的向量。
該向量每一個元素就是同一位置上的
所有輸入向量(即函數的參數)元素的最大(最小)值。
大多數情況下,用戶並不關心一個數值向量中的“數值”
到底是整數,實數,還是複數。R 環境內部的計算
是以雙精度的實數或者
雙精度的複數(在輸入資料是複數的情況下)實現的。
如果要處理複數,應該給出明確的複數部分。因此
sqrt(-17)
將會給出 NaN 和一個警告,但是
sqrt(-17+0i)
就會以複數形式計算。