R 语言学习笔记

R 语言学习笔记

这是我高中时期学习R语言时做的入门笔记,发出来当个备份。

我本人现在并不使用R!


一、基础操作与环境

  • 文件后缀.R
  • 赋值<-(常用),也支持 =->-->(箭头总是指向变量)
  • 输出/退出print() 输出(无分号结尾);q() 退出交互式环境
  • 变量名规则 :由字母、数字、点号 . 或下划线 _ 组成
  • 变量管理
    • ls():列出所有已定义的变量
    • rm(a):删除变量 a
  • 脚本执行Rscript 文件.R
  • 字符串拼接cat(a, b, ...),自动加空格间隔
    • file 参数:将内容输出到指定文件
    • append = TRUE:以追加写入方式输出
  • 输出重定向
    • sink(file):之后所有控制台输出转移到该文件
    • sink(file, split = TRUE):同时输出到控制台和文件
    • 无参 sink():取消之前的重定向设置
  • 生成序列1:5 生成 1~5 的数
  • 文件读取readLines(t) 读取文件 t 的内容
  • 工作目录
    • getwd():获取当前工作目录
    • setwd():设置当前工作目录
  • 注释
    • 单行注释:#
    • 多行注释:R 没有专门的多行注释语法

二、运算符

数学运算符

优先级从高到低:

  • ():括号
  • ^:乘方运算
  • %%:整除求余
  • %/%:整除
  • *:乘法
  • /:除法
  • +:加法
  • -:减法

关系运算符

  • >:大于
  • <:小于
  • ==:等于
  • !=:不等于
  • >=:大于等于
  • <=:小于等于
  • TRUE / FALSE:布尔值

逻辑运算符

  • &:元素逻辑与,比较向量中的每一个元素
  • |:元素逻辑或,比较向量中的每一个元素
  • !:逻辑非,比较向量中的每一个元素
  • &&:逻辑与,只对两个向量的第一个元素进行判断
  • ||:逻辑或,只对两个向量的第一个元素进行判断

其他特殊运算符

  • %in%:成员运算符,判断元素是否在向量中
  • %*%:矩阵乘法(矩阵与其转置相乘等)

三、数学与统计函数

  • sqrt(n):平方根
  • exp(n):自然常数 e 的 n 次方
  • log(m, n):以 n 为底 m 的对数
  • log10(m):以 10 为底 m 的对数,等同 log(m, 10)
  • round(n):四舍五入取整
  • round(n, m):保留 m 位小数,四舍五入
  • ceiling(n):向上取整
  • floor(n):向下取整
  • 三角函数:sin()cos()tan()
  • 反三角函数:asin()acos()atan()
  • 统计相关:
    • dnorm():概率密度函数
    • pnorm():概率密度积分函数
    • qnorm():分位数函数
    • rnorm(m, n, q):生成 m 个均值为 n、标准差为 q 的正态分布随机数

四、数据类型与对象

  • R 语言区分大小写
  • 基本数据类型:数字(numeric)、逻辑(boolean)、文本(string)
  • 基本对象
    • 向量(vector):线性表
    • 列表(list):可包含不同类型元素的集合
    • 矩阵(matrix):二维数组
    • 数组(array)
    • 因子(factor)
    • 数据框(data frame):二维列表,类似表格

常量

  • NA:表示缺失值(占位符)
  • NULL:表示不存在

五、向量操作

  • 创建向量:c()
  • 元素提取:通过下标索引
  • 排序相关:
    • sort():排序
    • rev():反转
    • order():返回排序后的索引下标
  • 统计函数:
    • sum():求和
    • mean():求平均值
    • var():方差
    • sd():标准差
    • min():最小值
    • max():最大值
    • range():返回最小值和最大值
  • 生成序列:
    • seq(m, n, q):从 m 到 n 公差为 q 的等差数列,可用 length.out 指定长度
    • rep(m, n):生成 n 个 m
  • 筛选与逻辑检查:
    • while(a):返回向量 a 中所有为 TRUE 的元素下标(注:通常用 which()
    • all():检查逻辑向量是否全部为 TRUE
    • any():检查逻辑向量是否含有 TRUE

六、字符串处理

  • 大小写转换:
    • toupper():转大写
    • tolower():转小写
  • 长度计算:
    • nchar(c, type = "bytes"):统计字节长度;type = "char" 统计字符个数
  • 截取:
    • substr(c, m, n):从 m 到 n 截取
    • substring(c, m):从 m 截取到末尾
  • 类型转换:
    • as.numeric():字符串转数字
    • as.character():数字转字符串
  • 拆分:strsplit(c, t):以 t 为分隔符拆分字符串 c
  • 替换:gsub(m, n, c):将字符串 c 中的 m 替换为 n
  • 连接:
    • paste(..., sep = " ", collapse = NULL):用指定分隔符连接字符串,sep 为元素间分隔符,collapse 用于连接后再次拼接
    • format(x, digits, nsmall, scientific, width, justify):格式化字符串
  • 计数:nchar(x) 计算字符串或列表长度
  • 截取:substring(x, first, last)

七、矩阵与数组

  • 创建矩阵:
    • matrix(v, m, n):以向量 v 按列生成 m 行 n 列的矩阵;byrow = TRUE 时按行填充;dimnames 设置行列名称
  • 行列名:
    • colnames(j):获取或设置列名
    • rownames(j):获取或设置行名
  • 线性方程求解:solve(A, b),A 为系数矩阵,b 为常数向量/矩阵
  • 跨维度计算:apply(j, m, f),m=1 行操作,m=2 列操作
  • 矩阵转置:t() 实现矩阵行列互换
  • 数组创建:
    • array(data = NA, dim = length(data), dimnames = NULL),data 为向量,dim 指定维度,dimnames 为维度名称列表
  • 数组计算:apply(x, margin, fun) 跨维度应用函数

八、列表与因子

  • 列表

    • list():创建列表
    • names():给列表元素命名
    • unlist():将列表转换为向量
  • 因子

    • 创建:factor(x = character(), levels, labels = levels, exclude = NA, ordered = is.ordered(x), nmax = NA)
      • x:向量
      • levels:指定水平值
      • labels:水平的标签
      • exclude:排除的字符
      • ordered:是否有序
      • nmax:水平上限数量
    • 判断因子:is.factor(x)
    • 生成因子水平:
      • gl(n, k, length = n*k, labels = seq_len(n), ordered = FALSE)
      • n: 水平个数;k: 每个水平重复次数;length: 设置长度;labels: 水平值;ordered: 是否有序

九、数据框

  • 创建数据框:

    r 复制代码
    data.frame(..., row.names = NULL, check.rows = FALSE,
               check.names = TRUE, fix.empty.names = TRUE,
               stringsAsFactors = default.stringsAsFactors())
    • ...:列向量,以 tag=value 形式给出
    • row.names:行名
    • check.rows / check.names:检查行/列名合法性
    • stringsAsFactors:字符是否自动转为因子
  • 数据框常用操作:

    • str(x):展示数据结构

    • summary():显示概要信息

    • cbind():将多个向量按列合并为数据框

    • rbind():按行合并两个数据框

    • $:数据框成员运算符,提取列

    • ncol():列数

    • nrow():行数

    • is.data.frame(a):判断是否为数据框

    • subset(a, b):按条件筛选行(多条件用 &

    • 合并数据框:

      r 复制代码
      merge(x, y, by = intersect(names(x), names(y)),
            by.x = by, by.y = by, all = FALSE,
            all.x = all, all.y = all, sort = TRUE,
            suffixes = c(".x",".y"), no.dups = TRUE, ...)
    • 重塑数据(reshape2 包):

      • melt(data, ..., na.rm = FALSE, value.name = "value"):将宽数据堆叠为长格式
      • dcast(data, formula, ...) 还原为数据框;acast(data, formula, ...) 还原为向量/矩阵/数组

十、流程控制

判断语句

  • if 语句
  • if...else 语句
  • switch 语句:根据第一参数返回对应的值

循环类型

  • repeat:块循环
  • while:条件循环
  • for:范围循环

循环控制

  • break:跳出循环
  • next:继续下一次迭代

函数定义

  • 关键字 function,返回值用 return()

十一、数据读写

CSV / 文本

  • 读取:read.csv("XXX.csv", encoding = "UTF-8"),返回数据框
  • 写入:write.csv(a, "XXX.csv")

Excel(需安装 xlsx 包)

  • 安装:install.packages("xlsx", repos = "https://mirrors.ustc.edu.cn/CRAN/")
  • 读取:read.xlsx()

XML(需安装 XML 包)

  • 安装:install.packages("XML", repos = "https://mirrors.ustc.edu.cn/CRAN/")
  • 解析:xmlParse(file = "XXX.xml")
  • 根节点:xmlRoot()
  • 节点数量:xmlSize()
  • 转列表:xmlToList()
  • 转数据框:xmlToDataFrame()

JSON(需安装 rjson 包)

  • 安装:install.packages("rjson", repos = "https://mirrors.ustc.edu.cn/CRAN/")
  • 读取:fromJSON(file = "XXX.json")
  • 转数据框:as.data.frame()

MySQL / MariaDB

  • MySQL 扩展包:RMySQL
  • MariaDB 扩展包:RMariaDB
  • 查询:dbSendQuery()
  • 获取结果集:fetch()

十二、扩展包管理

  • 查看安装目录:.libPaths()
  • 查看已载入包:search()
  • 安装包:install.packages("包名")
  • 加载包:library(包名),无参查看已安装的包

十三、绘图基础

图形设备

  • png()jpeg()bmp():设置输出图片格式
  • dev.off():关闭绘图设备
  • 中文字体:设置参数 family = 'GB1'

饼图

r 复制代码
pie(x, labels = names(x), edges = 200, radius = 0.8,
    clockwise = FALSE, init.angle = if(clockwise) 90 else 0,
    density = NULL, angle = 45, col = NULL, border = NULL,
    lty = NULL, main = NULL, ...)
  • x:数值向量,表示面积
  • labels:扇区标签
  • col:颜色
  • main:标题
  • 3D 饼图:需安装 plotrix 包,使用 pie3D()

条形图

r 复制代码
barplot(H, xlab, ylab, main, names.arg, col, beside)
  • H:数值向量或矩阵
  • beside = FALSE:堆叠条形图
  • beside = TRUE:并列条形图

字体相关(showtext 包)

  • showtext_begin() / showtext_end():开启/关闭字体渲染
  • showtext()font_add():载入自定义字体

函数图

r 复制代码
curve(expr, from = NULL, to = NULL, n = 101, add = FALSE,
      type = "l", xname = "x", xlab = xname, ylab = NULL,
      log = NULL, xlim = NULL, ...)

散点图

r 复制代码
plot(x, y, type = "p", main, xlab, ylab, xlim, ylim, axes)
  • type 可选:p(点)、l(线)、b(点线)、c(仅线)、o(点线且线穿过点)、h(垂直线)、s/S(阶梯图)、n(空图)

散点图矩阵

r 复制代码
pairs(formula, data)

十四、统计模型

  • 均值:mean(x, trim = 0, na.rm = FALSE)
    • trim:去除异常值比例(0~0.5)
    • na.rm:是否忽略缺失值
  • 中位数:median(x, na.rm = FALSE)
  • 线性回归:lm(formula, data)
    • formula:例如 y ~ x
  • 模型概要:summary(lm 对象)
  • 预测:predict(object, newdata)
    • object:来自 lm() 的模型
    • newdata:待预测的数据

十五、杂项工具函数

  • 判断整数:is.integer(x)
  • 其他工具:Rserve 扩展包(install.packages("Rserve"))等

------谙弆悕博士(Ailan Anjuxi)

相关推荐
70asunflower1 小时前
7.3 分类 —— 预测一个类别
人工智能·分类·数据挖掘·数据分析
不灭锦鲤1 小时前
网络安全学习第108天
学习
babe小鑫1 小时前
咨询行业转行数据分析指南
数据挖掘·数据分析
西梅汁1 小时前
VS2019安装漏勾选C#怎么补安装
笔记
William Dawson1 小时前
【 软考中级备考日记|系统集成项目管理工程师Day13:项目风险管理核心精讲\+决策树EMV计算题\+20道专项必刷题(带解析)】
笔记·系统集成项目管理工程师
babe小鑫1 小时前
2026金融行业学数据分析的价值
金融·数据挖掘·数据分析
XS0301062 小时前
Java Web实现简易CRUD操作笔记
java·前端·笔记
奶人五毛拉人一块2 小时前
C++ 红黑树的学习
学习·二叉树·红黑树·旋转
Shadow(⊙o⊙)2 小时前
qt内详解信号和槽的基本概念+实例演示
开发语言·前端·c++·qt·学习