美文网首页
R 基础运算

R 基础运算

作者: 惊鸿影 | 来源:发表于2021-10-18 15:56 被阅读0次

    赋值

    一般语言的赋值是 = 号,但是 R 语言是数学语言,所以赋值符号与我们数学书上的伪代码很相似,是一个左箭头 <-。这个赋值符号是 R 语言的一个形式上的优点和操作上的缺点:形式上更适合数学工作者,毕竟不是所有的数学工作者都习惯于使用 = 作为赋值符号。
    操作上来讲,< 符号和 - 符号都不是很好打的字符,这会让很多程序员不适应。因此,R 语言的比较新的版本也支持 = 作为赋值符:
    如下图,先给ab赋值

    > a <- 123
    > b <- 456
    > print(a+b)
    [1] 579
    > a =234
    > b = 567
    > print(a+b)
    [1] 801
    

    数学运算符

    下表列出了主要的数学运算符以及他们的运算顺序:

    优先级 符号 含义
    1 () 括号
    2 ^ 乘方运算
    3 %% 整除求余
    %/% 整除
    4 * 乘法
    / 除法
    5 + 加法
    - 减法

    如下是运行结果

    > 1 + 2 * 3
    [1] 7
    > (1 + 2) * 3
    [1] 9
    > 3 / 4
    [1] 0.75
    > 3.4 - 1.2
    [1] 2.2
    > 1 - 4 * 0.5^3
    [1] 0.5
    > 8 / 3 %% 2
    [1] 8
    > 8 / 4 %% 2
    [1] Inf
    > 3 %% 2^2
    [1] 3
    > 10 / 3 %/% 2
    [1] 10
    

    关系运算符

    下表列出了 R 语言支持的关系运算符,关系运算符比较两个向量,将第一向量与第二向量的每个元素进行比较,结果返回一个布尔值。

    运算符 描述
    > 判断第一个向量的每个元素是否大于第二个向量的相对应元素。
    < 判断第一个向量的每个元素是否小于第二个向量的相对应元素。
    == 判断第一个向量的每个元素是否等于第二个向量的相对应元素。
    != 判断第一个向量的每个元素是否不等于第二个向量的相对应元素。
    >= 判断第一个向量的每个元素是否大于等于第二个向量的相对应元素。
    <= 判断第一个向量的每个元素是否小于等于第二个向量的相对应元素。

    如下

    > v = c(2,4,6,9)
    > t = c(1,4,7,9)
    > print(v>t)
    [1]  TRUE FALSE FALSE FALSE
    > print(v<t)
    [1] FALSE FALSE  TRUE FALSE
    > print(v==t)
    [1] FALSE  TRUE FALSE  TRUE
    > print(v!=t)
    [1]  TRUE FALSE  TRUE FALSE
    > print(v>=t)
    [1]  TRUE  TRUE FALSE  TRUE
    > print(v<=t)
    [1] FALSE  TRUE  TRUE  TRUE
    

    逻辑运算符

    下表列出了 R 语言支持的逻辑运算符,可用于数字、逻辑和复数类型的向量。
    大于 1 的数字都为 TRUE。
    逻辑运算符比较两个向量,将第一向量与第二向量的每个元素进行比较,结果返回一个布尔值。

    运算符 描述
    & 元素逻辑与运算符,将第一个向量的每个元素与第二个向量的相对应元素进行组合,如果两个元素都为 TRUE,则结果为 TRUE,否则为 FALSE。
    元素逻辑或运算符,将第一个向量的每个元素与第二个向量的相对应元素进行组合,如果两个元素中有一个为 TRUE,则结果为 TRUE,如果都为 FALSE,则返回 FALSE。
    ! 逻辑非运算符,返回向量每个元素相反的逻辑值,如果元素为 TRUE 则返回 FALSE,如果元素为 FALSE 则返回 TRUE。
    && 逻辑与运算符,只对两个向量对第一个元素进行判断,如果两个元素都为 TRUE,则结果为 TRUE,否则为 FALSE。
    || 逻辑或运算符,只对两个向量对第一个元素进行判断,如果两个元素中有一个为 TRUE,则结果为 TRUE,如果都为 FALSE,则返回 FALSE。

    如下:

    > v <- c(3,1,TRUE,2+3i)
    > t <- c(4,1,FALSE,2+3i)
    > print(v&t)
    [1]  TRUE  TRUE FALSE  TRUE
    > print(v|t)
    [1] TRUE TRUE TRUE TRUE
    > print(!v)
    [1] FALSE FALSE FALSE FALSE
    > print(v&&t)
    [1] TRUE
    > print(v||t)
    [1] TRUE
    

    赋值运算符

    R 语言变量可以使用向左,向右或等于操作符来赋值。
    下表列出了 R 语言支持的赋值运算符。

    运算符 描述
    <− ; = ; <<− 向左赋值
    −> ; −>> 向右赋值

    如下:

    # 向左赋值
    > v1 <- c(3,1,TRUE,"runoob")
    > v2 <<- c(3,1,TRUE,"runoob")
    > v3 = c(3,1,TRUE,"runoob")
    > print(v1)
    [1] "3"      "1"      "TRUE"   "runoob"
    > print(v2)
    [1] "3"      "1"      "TRUE"   "runoob"
    > print(v3)
    [1] "3"      "1"      "TRUE"   "runoob"
    
    # 向右赋值
    > c(3,1,TRUE,"runoob") -> v1
    > c(3,1,TRUE,"runoob") ->> v2
    > print(v1)
    [1] "3"      "1"      "TRUE"   "runoob"
    > print(v2)
    [1] "3"      "1"      "TRUE"   "runoob"
    

    其他运算符

    R 语言还包含了一些特别的运算符。

    运算符 描述
    : 冒号运算符,用于创建一系列数字的向量。
    %in% 用于判断元素是否在向量里,返回布尔值,有的话返回TRUE,没有返回 FALSE。
    %*% 用于矩阵与它转置的矩阵相乘。
    # 1 到 10 的向量
    v <- 1:10
    print(v)
    
    # 判断数字是否在向量 v 中
    v1 <- 3
    v2 <- 15
    > print(v1 %in% v)
    [1] TRUE
    > print(v2 %in% v)
    [1] FALSE
    
    # 矩阵与它转置的矩阵相乘
    M = matrix( c(2,6,5,1,10,4), nrow = 2,ncol = 3,byrow = TRUE)
    t = M %*% t(M)
    print(t)
    > print(t)
         [,1] [,2]
    [1,]   65   82
    [2,]   82  117
    

    数学函数

    常见对一些数学函数有:

    函数 说明
    sqrt(n) n的平方根
    exp(n) 自然常数e的n次方
    log(m,n) m的对数函数,返回n的几次方等于m
    log10(m) 相当于log(m,10)

    如下:

    > sqrt(4)
    [1] 2
    > exp(1)
    [1] 2.718282
    > exp(2)
    [1] 7.389056
    > log(2,4)
    [1] 0.5
    > log10(10000)
    [1] 4
    

    取整函数:

    名称 参数模型 含义
    round (n) 对 n 四舍五入取整
    (n, m) 对 n 保留 m 位小数四舍五入
    ceiling (n) 对 n 向上取整
    floor (n) 对 n 向下取整
    > round(1.5)
    [1] 2
    > round(2.1235234,4)
    [1] 2.1235
    > round(3.5)
    [1] 4
    > round(4.5)
    [1] 4
    

    注意:R 中的 round 函数有些情况下可能会"舍掉五"。当取整位是偶数的时候,五也会被舍去,这一点与 C 语言有所不同。

    关于 round 函数取整位为 4 时,是否舍去 5 分两种情况:

    #只有一位小数
    > round(4.5)
    > [1] 4
    #多于一位小数
    > round(4.55)
    > [1] 5
    > round(4.5556666)
    > [1] 5
    

    R 的三角函数是弧度制:

    #三角函数
    > sin(pi/6)
    [1] 0.5
    > cos(pi/4)
    [1] 0.7071068
    > tan(pi/3)
    [1] 1.732051
    #反三角函数
    > asin(0.5)
    [1] 0.5235988
    > acos(0.7071068)
    [1] 0.7853981
    > atan(1.732051)
    [1] 1.047198
    

    如果学习过概率论和统计学,应该对以下的概率分布函数比较了解,因为 R 语言为数学工作者设计,所以经常会用到:

    > dnorm(0) # dnorm 指示标准正态(高斯)分布(期望为0,方差为1)的概率密度函数
    [1] 0.3989423
    > pnorm(0) # pnorm 指示标准正态分布的概率分布函数(即对概率密度函数求积分)
    [1] 0.5
    
    > qnorm(0.96) # qnorm 计算Alpha下分位点
    [1] 1.644854
    > rnorm(3, 5, 2) # 产生 3 个平均值为 5,标准差为 2 的正态随机数
    [1] 4.177589 6.413927 4.206032
    

    这四个都是用来计算正态分布的函数。它们的名字都以 norm 结尾,代表"正态分布"。
    分布函数名字的前缀有四种:
    d - 概率密度函数
    p - 概率密度积分函数(从无限小到 x 的积分)
    q - 分位数函数
    r - 随机数函数(常用于概率仿真

    参考学习网站:https://www.runoob.com/r/r-basic-operators.html

    相关文章

      网友评论

          本文标题:R 基础运算

          本文链接:https://www.haomeiwen.com/subject/uragoltx.html