• R 语言精简入门


    R_Basic

    1. 数据类型

    1. 双精度浮点数
      • 双精度浮点数 (double) 是 R 中十进制数的默认类型
      • double 类型的数字可以参与数学运算
    2. 字符串
      • 字符串 (string) 是一组表示文本的字符
      • R 中字符串使用双引号串联起来
    3. 逻辑类型
      • 由 TRUE 和 FALSE 表示的真值或假值
      • 可以使用 & 和 | 将逻辑值组合起来,从而执行基本的逻辑运算

    2. 缺失值

    • R 中使用 NA 来表示缺失值
    • R 对任何使用缺失值的运算输出 NA

    3. 向量

    • R 是一种向量语言(vector language)
    • 向量是一个数值列表,R 所做的一切都是对向量进行运算
    • 向量的定义 c(…)

    4. 函数

    • 函数是对值进行特定操作的代码块
    • R 和 RStudio 中,可以使用 ?函数名 的方式获取该函数的完整帮助文档

    5. 随机抽样

    6. 自定义函数

    # 1. 数据类型
    # 1.1 double
    5 + 2 # 加法
    5 - 2 # 减法
    5 / 2 # 除法
    5 * 2 # 乘法
    5 ^ 2 # 乘方
    5--2 # 相反数
    5e+2 # 科学计数法
    5e-2 # 科学计数法
    # 1.2 字符串
    "hello" # 用双引号将字符串引起来
    # 1.3 逻辑类型
    TRUE & FALSE
    TRUE | FALSE
    
    # 2. 缺失值
    NA + 2
    
    # 3. 向量
    x <- c(1, 2, 3) # 向量的定义
    x + 3 # 向量加数(向量每个元素分别加上这个数)
    y <- c(2, 2, 2)
    x + y # 向量相加(向量对应位置元素相加)
    x * y # 向量相乘(向量对应位置元素相乘)
    # 向量相乘
    # if x, y 元素个数不同 or x, y 其中一个向量的元素个数不是另一个的整数倍
    # then 错误提示
    # if x, y 一个向量的元素个数不是另一个的整数倍
    # then 扩展短向量的元素个数与长向量的一样
    z <- c(x, y) # 通过现有向量定义一个新的向量
    
    # 4. 函数
    # 4.1 length() 返回向量的长度
    length(c(1, 2, 3))
    length("dog") # 这里表示包含一个字符串的向量,因此返回 1
    length(c("dog", "cat"))
    # 4.2 nchar() 返回字符串的字符数量
    nchar("dog")
    nchar(c("dog", "cat")) # 返回一个新的向量,其元素是对应字符串的长度
    # 4.3 sum() 以数值向量为参数,计算此向量的所有数值之和
    sum(c(1, 2, 3))
    sum(c(1, 2), 3)
    sum(1, 2, 3) # 无论提供多少个向量,sum() 函数都会将这些向量的所有元素相加
    sum(c(1, NA, 3))
    sum(c(1, NA, 3), na.rm = TRUE) # sum() 的可选参数 na.rm 为真时,函数求和过程中删除缺失值
    # 4.4 cumsum() 以一个向量为参数,计算其元素的累积和 cumulative sum,
    # 返回的向量长度与原向量相等,每个元素值变成原向量该位置之前(包括)所有元素之和
    cumsum(c(1, 1, 1, 1, 1))
    cumsum(c(2, 10, 3))
    # 4.5 diff() 以一个向量为参数,并从向量的第二个元素开始用当前元素减去前一个元素,
    # 返回的向量长度比原向量少一个元素,这是是因为第一个元素没有前一个元素可减
    diff(c(1, 2, 3, 4, 5))
    # 4.6 ":" 运算符,自动创建特定范围内的整数向量,使用 ":" 运算符分隔该范围的初始值和终止值
    # R 会从第一个值一直输出的到最后一个值,且增量为 1 or -1
    c(1:5)
    c(5:1)
    # 4.7 seq() 用于创建一个指定增量递增的数值序列向量,其参数依次是
    # 序列初始值:序列终止值:序列的增量
    seq(1, 1.1, 0.05)
    seq(0, 15, 5)
    seq(1, 2, 0.3)
    seq(10, 5, -1)
    # 4.8 ifelse() 可以理解为 if-else 控制结构的简化
    ifelse(2 < 3, "small", "big")
    # 第一个参数中的条件判断为真,则执行第二个参数对应内容,否则执行第三个参数对应内容
    x <- c(1, 2, 3)
    ifelse(x < 3, "small", "big") # 对向量中的每个元素进行条件判断并执行相关的语句
    y <- c(2, 1, 6)
    ifelse(x > y, x, y)
    
    # 5. 随机抽样
    # 5.1 runif(n, min = 0, max = 1) random uniform 均匀随机
    # para: n 样本数量,[min, max] 均匀抽样的范围
    # return: 在 [min, max] 范围内随机生成 n 个样本
    ifelse(runif(5), "A", "B") # 以 20% 概率生成字母 A
    runif(5, 0, 2) # 在 [0, 2] 范围内随机抽 5 个样本
    # 5.2 rnorm(n, mean = 0, sd = 1) 正态随机
    # para: n 样本数量匀 mean 正态分布的均值 sd 正态分布的标准差
    # return: 从均值为 mean,标准差为 sd 的正态分布中抽样
    rnorm(5)
    rnorm(4, mean = 2, sd = 10)
    # 5.3 sample(x, size, replace = FALSE)
    # para: x 用于抽样的向量 size 样本数量 replace 是否放回抽样(TRUE 则返回,默认不放回)
    # return: 返回从 x 中抽 size 个样本的抽样结果
    mood <- c("sad", "happy", "upset")
    sample(mood, 2) # 不放回抽烟
    sample(mood, 10, replace = TRUE)
    # 5.4 set.seed() 手动设置种子值,作为伪随机数生成器的初始状态
    # 两次抽样种子值相同的时候,其对应产生的随机数相同,则抽样结果相同
    set.seed(1337)
    ifelse(runif(5) < 2, "A", "B")
    set.seed(1337)
    ifelse(runif(5) < 2, "A", "B")
    
    # 6. 自定义函数:R 使用关键字 function 来定义函数
    double_then_cube <- function(val) {
      (val * 2) ^ 3
    }
    double_then_cube(8)
    double_then_cube(c(1, 2, 3))
    sum_then_square <- function(x, y) {
      (x + y) ^ 2
    }
    sum_then_square(2, 3)
    sum_then_square(c(1, 2), c(5, 3))
    
    # 7. 绘制基本图形 (基本绘图函数)
    # plot(xs, ys, type="p", main=NULL, xlab=NULL, ylab=NULL)
    # para: xs x 坐标向量,ys y 坐标向量,type(p 表示点图、l 表示折线图、b 表示点+折线图)
    # main 图标题,xlab x轴标签,ylab y轴标签
    # lines(x, y = NULL, type = "l", ...) 将折线添加到已有图中,参数和 plot() 相同
    xs <- c(1, 2, 3, 4, 5)
    ys <- c(2, 3, 2, 4, 6)
    plot(
      xs,
      ys,
      type = "l",
      main = "示例图",
      xlab = "x轴",
      ylab = "y轴"
    )
    plot(
      xs,
      ys,
      type = "b",
      main = "示例图2",
      xlab = "x轴",
      ylab = "y轴"
    )
    plot(
      xs,
      ys,
      type = "p",
      main = "示例图",
      xlab = "x轴",
      ylab = "y轴"
    )
    lines(xs, ys)
    
    # exer
    t.vals <- seq(1, 20, 1)
    price.vals <- cumsum(rnorm(length(t.vals), mean = 5, sd = 10))
    plot(t.vals,
         price.vals,
         main = "模拟股票价格",
         xlab = "时间",
         ylab = "价格")
    lines(t.vals, price.vals)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
  • 相关阅读:
    【Unity,C#】哨兵点位循迹模板代码
    Docker+K8s基础(重要知识点总结)
    【深度学习】卷积神经网络(LeNet)【文章重新修改中】
    ES新特性与TypeScript、JS性能优化
    【HarmonyOS】元服务卡片router实现跳转到指定页面
    物联网毕业设计 - 基于单片机的静脉输液流速流量监测系统
    软件架构模式+系统架构
    堆(优先级队列)
    nodejs+vue+elementui高校师资管理系统开发java python php
    QT 小知识随记
  • 原文地址:https://blog.csdn.net/weixin_52401264/article/details/128111068