第二章 运算符和数学函数
第二章 运算符和数学函数
2.1 数学运算符
| : | 创建序列(两头都会包含) | > x <- 2:4 > x [1] 2 3 4 |
|---|---|---|
| + | 加 | > 1+1 [1] 2 |
| - | 减 | > 2-1 [1] 1 |
| * | 乘 | > 1*2 [1] 2 |
| / | 浮点数除法 | > 3/2 [1] 1.5 |
| %/% | 整数除法 | > 3%/%2 [1] 1 |
| %% | 余数 | > 3%%2 [1] 1 |
| ^或** | 求幂 | > 2^2 [1] 4 > 2**2 [1] 4 |
2.2数值运算函数
2.2.1数学函数
| sin(x) | 正弦 | > sin(pi/6) [1] 0.4997701 |
|---|---|---|
| cos(x) | 余弦 | > cos(pi/6) [1] 0.8661581 |
| tan(x) | 正切 | > tan(pi/6) [1] 0.5769964 |
| asin(x) | 正割 | > asin(pi/6) [1] 0.550758 |
| acos(x) | 余割 | > acos(pi/6) [1] 1.020038 |
| atanx) | 余切 | > atan(pi/6) [1] 0.4821396 |
| log(x,base=n) | 对数 | > log(10,10) [1] 1 等同于 > log10(10) [1] 1 |
| exp(x) | 指数 | exp(pi * 1i) + 1 [1] 1.268e-06+1.592653e-03i |
| abs(x) | 绝对值 | > abs(-2) [1] 2 |
| sqrt(x) | 平方根 | > sqrt(6.25) [1] 2.5 |
| ceiling(x) | 不小于x的最小整数 | > ceiling(1.2) [1] 2 |
| floor(x) | 不大于x的最大整数 | > floor(1.8) [1] 1 |
| trunc(x) | 向0的方向截取x中的整数部分 | > trunc(1.5) [1] 1 |
| round(x,digits=n) | 将x舍入为指定位的小数 | > round(3.1415926535,5) [1] 3.14159 |
| signif(x,digits=n) | 将x舍入为指定的有效数字位数 | > signif(3.1415926535,5) [1] 3.1416 |
2.2.2统计函数
| mean(x) | 平均数 | |
|---|---|---|
| median(x) | 中位数 | |
| sd(x) | 标准差 | |
| var(x) | 方差 | |
| mad(x) | 平均绝对偏差 | |
| cov(x,y) | 协方差系数 | |
| cor(x,y) | 相关系数 | |
| length(x) | 求x中包含的元素个数 | |
| cumsum(x) | 求x的累计和 | |
| cumprod(x) | 求x的累积乘积 | |
| quantile(x,probs) | 求分位数。其中x为待求分位数的数值型向量,probs为一个由[0,1]之间的概率值组成的数值向量 | |
| cut(x,n) | 依据x的最小值和最大值将x分成n组,并给x各元素所在的组 | |
| scale(x) | 对x做标准化处理(各元素减其均值除以其标准差) | |
| rank(x) | 计算x的秩(升序排序的名次,同名次时求平均) | |
| rnorm(n,mean,sd) | 产生n个平均值为mean,标准差为sd的随机数 | |
| set.seed(n) | 生成n个随机数种子 | |
| range(x) | 求值域 | |
| sum(x) | 求和 | |
| rowSums(matrix) | 按行求和 | |
| colSums(matrix) | 按列求和 | |
| min(x) | 求最小值 | |
| max(x) | 求最大值 | |
| pmin(x1,x2...) | 能计算相同长度的若干向量中在相同位置的最小值 | |
| pmax(x1,x2...) | 能计算相同长度的若干向量中在相同位置的最大值 | |
| cummin(x) | 计算向量中的最小值 | |
| cummax(x) | 计算向量中的最大值 | |
| cumsum(x) | 能计算数据中的累加 | |
| cumprod(x) | 能计算数据中的累乘 | |
| quantile(x) | 它默认 计算中位数、最小值、最大值和上下四分位数。第二参数还可以指定百分位比 | |
| IQR(x) | 直接计算出四分位差(第 75 百分位减去第 25 个百分位) | |
| fivenum(x) | 获取数据的五个数字摘要(最小值,下四分位数,中位数,上四分位数,最大值),是对quantile作的大量简化 | |
| summary(x) | 能够一次完成多项统计计算 | |
| cor(x1,x2...) | 计算数值向量之间的相关性 | |
| diff(x, lag=n) | 滞后差分,lag指明滞后几项,默认的 lag值为1 | |
| scale(x, center = TRUE, scale=TRUE) | 为数据对象x按列进行中心化 (center=TRUE)或者标准化 (center=TRUE, scale=TRUE) | |
| table(x) | 计算每个不同值的个数,称为频数 | |
2.2.3概率函数
| 分布名称 | 缩写 | 分布的参数名称及默认值 |
|---|---|---|
| Beta分布 | beta | shape1,shape2 |
| Logistic分布 | logis | location=0,scale=1 |
| 二项分布 | binom | size,prob |
| 多项分布 | multinom | size,prob |
| 柯西分布 | cauchy | location=0,scale=1 |
| 负二项分布 | nbinom | size,prob |
| (非中心)卡方分布 | chisq | df |
| 正态分布 | norm | mean=0,sd=1 |
| 指数分布 | exp | rate=1 |
| 松分布 | pois | lambda |
| F分布 | f | df1,df2 |
| Gamma分布 | gamma | t |
| 几何分布 | geom | unif |
| 超几何分布 | hyper | weibull |
| 对数正态分布 | lnorm | wilcox |
2.2.4分布函数和分位数函数
| dnorm | 标准正态分布密度函数 | > dnorm(1.98) [1] 0.05618314 |
|---|---|---|
| pnorm | 标准正态分布函数 | > pnorm(1.98) [1] 0.9761482 |
| qnorm | 标准正态分布分位数函数 | > qnorm(0.975) [1] 1.959964 |
| qt | 表示自由度为df的t分布的分位数函数 |
> qt(1 - 0.05/2, 10) [1] 2.228139 |
2.3比较运算符:
| == | 比较整数值是否相等 |
|---|---|
| all.equal | 比较两个数字是否相等 |
| != | 不等于 |
| < | 小于 |
| > | 大于 |
| <= | 小于等于 |
| >= | 大于等于 |
> 1 == 2
[1] FALSE
> all.equal(sqrt(2) ^ 2, 2)
[1] TRUE
> 1 != 2
[1] TRUE
> 2 > 1
[1] TRUE
> 2 < 1
[1] FALSE
> 2 >= 1
[1] TRUE
> 2 <= 1
[1] FALSE
2.4变量赋值
<-和=都可以,<-是首选
<<-全局变量赋值,用比较少
另一个变量赋值的方法是通过 assign 函数赋值。这种情况不太常,再加上globalenv()参数即全局赋值
> x <- 2
> x
[1] 2
> y = 3
> y
[1] 3
> z <<- 4
> z
[1] 4
> assign("a", 1)
> a
[1] 1
> assign("b", 6, globalenv())
> b
[1] 6
2.5特殊数字
| Inf | 正无穷 |
|---|---|
| -Inf | 负无穷 |
| NaN | “不是一个数”(not-a-number)的缩写,它意味着 我们的计算或没有数学意义,或无法正确执行 |
| NA | “不可用”(not available)的缩写, 并不代表缺失值 |
2.6逻辑向量
逻辑运算符
| ! | 非 |
|---|---|
| & | 元素逻辑与运算符。它将第一个向量的每个元素与第二个向量的相应位置的元素相结合,如果两个元素都为真,则输出为TRUE |
| | | 元素逻辑或运算符。它将第一个向量的每个元素与第二个向量的相应位置的元素相结合,如果两个元素中有一个为真,则输出为TRUE |
| && | 取两个向量的第一个元素,并且只有在两个都为TRUE时结果才为TRUE值 |
| || | 取两个向量的第一个元素,并且如果有一个为TRUE时,结果为TRUE值 |
另外2个处理逻辑向量的函数 any和all,如果输入向量中至少包含一个TRUE的值或者只包含TRUE值,则分别返回TRUE
> none_true <- c(FALSE, FALSE, FALSE)
> some_true <- c(FALSE, TRUE, FALSE)
> all_true <- c(TRUE, TRUE, TRUE)
> any(none_true)
[1] FALSE
> any(some_true)
[1] TRUE
> any(all_true)
[1] TRUE
> all(none_true)
[1] FALSE
> all(some_true)
[1] FALSE
> all(all_true)
[1] TRUE
2.7输出
2.7.1简单输出
在用source()运行程序文件时, 需要用print()函数显示一个表达式的结果
> print(sin(pi/2))
[1] 0.9999997
用cat()函数显示多项内容, 包括数值和文本, 文本包在两个单撇号或两个双撇号中
> cat("sin(pi/2)=", sin(pi/2), "\n")
sin(pi/2)= 0.9999997
cat()函数最后一项一般是"\n", 表示换行。 忽略此项将不换行。
2.7.2用sink()函数作运行记录
用sink()函数打开一个文本文件开始记录文本型输出结果。 结束记录时用空的sink()即可关闭文件不再记录。
sink("tmpres01.txt", split=TRUE)
print(sin(pi/6))
print(cos(pi/6))
cat("t(10)的双侧0.05分位数(临界值)=", qt(1 - 0.05/2, 10), "\n")
sink()
浙公网安备 33010602011771号