2.2 向量运算
在算术表达式中使用向量将会对该向量的每一个元素都进行同样算术运算。出现在同一个表达式中的向量最好是长度一致。如果他们的长度不一样,该表达式的值将是一个和其中最长向量等长的向量。表达式中短的向量会被循环使用(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)
就会以复数形式计算。