http://blog.fens.me/rhadoop-r-basic/
前言
R是作为统计语言,生来就对数学有良好的支持,一个函数就能实现一种数学计算,所以用R语言做数学计算题特别方便。如果计算器中能嵌入R的计算函数,那么绝对是一种高科技产品。
本文总结了R语言用于初等数学中的各种计算。 目录 1. 2. 3. 4.
基本计算 三角函数计算 复数计算 方程计算
1 基本计算
四则运算: 加减乘除, 余数, 整除, 绝对值, 判断正负
> a<-10;b<-5
# 加减乘除
> a+b;a-b;a*b;a/b [1] 15 [1] 5 [1] 50 [1] 2
# 余数,整除 > a%%b;a%/%b [1] 0 [1] 2
# 绝对值 > abs(-a) [1] 10
# 判断正负 > sign(-2:3)
[1] -1 -1 0 1 1 1
数学计算: 幂, 自然常用e的幂, 平方根, 对数
> a<-10;b<-5;c<-4 # 幂
> c^b;c^-b;c^(b/10) [1] 1024
[1] 0.0009765625 [1] 2
# 自然常数e > exp(1) [1] 2.718282
# 自然常数e的幂 > exp(3) [1] 20.08554
# 平方根 > sqrt(c) [1] 2
# 以2为底的对数 > log2(c) [1] 2
# 以10为底的对数 > log10(b) [1] 0.69897
# 自定义底的对数 > log(c,base = 2) [1] 2
# 自然常数e的对数 > log(a,base=exp(1)) [1] 2.302585
# 指数对数操作 > log(a^b,base=a) [1] 5
> log(exp(3)) [1] 3
比较计算: ==, >, <, !=, <=, >=, isTRUE, identical
> a<-10;b<-5
# 比较计算
> a==a;a!=b;a>b;a
# 判断是否为TRUE > isTRUE(a) [1] FALSE > isTRUE(!a) [1] FALSE
# 精确比较两个对象
> identical(1, as.integer(1)) [1] FALSE
> identical(NaN, -NaN) [1] TRUE
> f <- function(x) x > g <- compiler::cmpfun(f) > identical(f, g) [1] TRUE
逻辑计算: &, |, &&, ||, xor
> x<-c(0,1,0,1) > y<-c(0,0,1,1)
# 只比较第一个元素 &&, || > x && y;x || y [1] FALSE [1] FALSE
# S4对象的逻辑运算,比较所有元素 &, |
> x & y;x | y
[1] FALSE FALSE FALSE TRUE [1] FALSE TRUE TRUE TRUE # 异或 > xor(x,y)
[1] FALSE TRUE TRUE FALSE > xor(x,!y)
[1] TRUE FALSE FALSE TRUE
约数计算: ceiling,floor,trunc,round,signif
# 向上取整 > ceiling(5.4) [1] 6
# 向下取整 > floor(5.8) [1] 5
# 取整数 > trunc(3.9) [1] 3
# 四舍五入 > round(5.8)
# 四舍五入,保留2位小数 > round(5.8833, 2) [1] 5.88
# 四舍五入,保留前2位整数 > signif(5990000,2) [1] 6e+06
数组计算: 最大, 最小, 范围, 求和, 均值, 加权平均, 连乘, 差分, 秩,,中位数, 分位数, 任意数,全体数
> d<-seq(1,10,2);d [1] 1 3 5 7 9
# 求最大值,最小值,范围range > max(d);min(d);range(d) [1] 9 [1] 1 [1] 1 9
# 求和,均值 > sum(d),mean(d) [1] 25
[1] 5
# 加权平均
> weighted.mean(d,rep(1,5)) [1] 5
> weighted.mean(d,c(1,1,2,2,2)) [1] 5.75 # 连乘 > prod(1:5) [1] 120 # 差分 > diff(d) [1] 2 2 2 2 # 秩 > rank(d) [1] 1 2 3 4 5
# 中位数 > median(d) [1] 5
# 分位数 > quantile(d)
0% 25% 50% 75% 100% 1 3 5 7 9
# 任意any,全体all > e<-seq(-3,3);e
[1] -3 -2 -1 0 1 2 3 > any(e<0);all(e<0) [1] TRUE [1] FALSE
排列组合计算: 阶乘, 组合, 排列
# 5!阶乘
> factorial(5) [1] 120
# 组合, 从5个中选出2个 > choose(5, 2) [1] 10
# 列出从5个中选出2个的组合所有项 > combn(5,2)
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]