视频课程来源:2-1-数据基本知识-数据类型_哔哩哔哩_bilibili
代码文本来源:
学习进度:第一章、第二章
# 欢迎来到模型机器的线上课堂 # R语言从入门到进阶 ###################################################### ###################################################### # R、RStudio安装 # https://mirrors.ustc.edu.cn/CRAN/ # https://rstudio.com/products/rstudio/download/ # 网站说明task,packages list,package page # 界面布局、显示、中文编码问题说明 ###################################################### # 包 # 包的安装 install.packages("car") # 建议在线安装,不建议本地安装 # 包的加载 library(car) # 单独加载包内的某个函数 # car::vif() # 更新包 update.packages() # 更新所有包,逐个提示 # 更新指定包,以包名称作为参数即可 # 移除包 remove.packages("car") ###################################################### # 获取帮助 # 某个函数的帮助 ?help help("library") # 某个关键词的帮助 ??help help.search("library") # 某个package的帮助 help(package = "ggplot2") # 获取当前工作目录 getwd() # 设置工作目录 setwd() # 获取文件路径 file.choose() # read.csv(file.choose()) # 转义字符 \ # rstudio的项目(工程)创建 # 保存R文件.RData # 直接鼠标点击 save() save.image() # 加载R文件 load(file.choose()) # 加载某个包内置的数据集 data() # 列示当前环境中的对象 ls() # 移除某个对象 rm() # 移除所有对象 rm(list = ls())
数据基本知识部分,主要介绍数值型、字符型、逻辑型三种数据类型以及对应的判断和转换函数,向量、矩阵、列表、数据框等数据结构以及对应的构建函数、属性函数和索引方法,对R语言中的特殊值、常量也有相应的介绍。 ###################################################### # R常用数据类型 # 数值型 123 2.34 # 字符型 "Hello, World." '123' # 逻辑型 TRUE T FALSE F # 判断 函数名(参数名=参数值) 值为逻辑型TRUE/FALSE is.numeric(123) is.numeric(FALSE) is.character('123') is.character(FALSE) is.logical('123') is.logical(FALSE) # 转换 强制类型转换 as.numeric('123') as.numeric('转换') # 报错 as.numeric(T) # 转换结果为1 as.numeric(F) # 转换结果为0 as.character(123) as.logical("Hello, World.") # 报错 as.logical(2) as.logical(1) as.logical(-2) as.logical(2.1) as.logical(0) # 0为FALSE 非0为TRUE # 特殊值 NA is.na(NA) # 数据缺失/不可用 NULL is.null(NULL) # 空值 NaN is.nan(NaN) # 不是一个数 Inf -Inf is.infinite(-Inf) # 正无穷和负无穷 # 示例 2/0 -2/0 0/0 ###################################################### ###################################################### # R常用数据结构 # 赋值 # 对象名 <- 对象值 # = # 快捷键 alt + - # 向量 # 常量 pi letters LETTERS month.name month.abb # 可以直接使用的内置赋值的常量,π、小写字母、大写字母、月份(全拼)、月份(缩写) v1 <- 1:5 v2 <- c(3,2,7,4,6) # c(x,y,z) # 将x、y、z链接在一起 v3 <- rep(v2, times = 2) v4 <- rep(v2, each = 2) v5 <- rep(v2, times = 2, each = 2) # rep(向量, times= ,each= ) # 重复向量 向量整体几次 向量中每个元素几次 # 先each 再times v6 <- seq(from = 2, to = 9, by = 3) v7 <- seq(from = 2, to = 9, length.out = 3) v8 <- seq(from = 2, by = 3, length.out = 4) # seq(from = x, to = y, by = z) # 从x取到y,步长为z # seq(from = x, to = y, length.out = z) # 取x、y,平均切分为Z个元素 # seq(from = x, by = y, length.out = z) # 从x开始取值,步长为y,共取Z个元素 v9 <- c('aic', 'bic', 'cp') rep(v9, each = 3) c(T,T, F,T) # c函数中用两种类型向量会强制转换为同一种类型的数据,优先级字符>数值 c(T, "aic") # 向量元素名称 names(v2) names(v2) <- v9 v2 # v2共九个元素,其中前三个元素会被v9赋予aic、bic、cp的名称,其余六个元素名称为<NA> # 向量长度 length(v9) # 向量索引 v8[3] # r语言的索引是从1开始,不是0,与c语言做好区分 v8[c(1, 3, 5)] # 四位元素中取1、3、5号元素,5号为NA v8[-c(1, 4)] # 排除1、4号元素取值 v2[c('aic', 'cp')] # 按名称取值 v1[v1%%2==1] # 按条件索引 ###################################################### # 矩阵 # 利用matrix函数构造矩阵 m1 <- matrix( 1:6, # 1-6 nrow = 2, # ncol = 3, # 行/列有一个确定即可确定矩阵 byrow = F, # 按列填充 dimnames = list(c('r1', 'r2'), c('c1', 'c2', 'c3')) # 确定矩阵行列的名称 # list()列表函数 ) m1 # matrix(NA, ncol = 3, nrow = 3) # 预先准备好接收结果的容器 m2 <- matrix( c(1:6,letters[1:6]), nrow = 3, byrow = F, dimnames = list(c('r1', 'r2', 'r3'), c('c1', 'c2', 'c3', 'c4')) ) m2 # 行列名称(单独列/单独行/行列同时返回) # 可以使用 <- 来更改行列名称 colnames(m1) rownames(m1) dimnames(m2) # 维度信息 dim(m1) # 同时返回行列数 ncol(m1) # 列数目 nrow(m1) # 行数目 # 矩阵索引 m2[1,2] # 返回向量 第1行2列 m2[1,] # 返回向量 第1行 m2[,2] # 返回向量 第2列 m2[1:2,2:3] # 返回矩阵 第1-2行,第2-3列 m2[c(1,3), c(2,4)] # 返回1、3两行,2、4两列 m1['r1',] # 按名称返回向量 整个r1行 m1[,'c1'] # 按名称返回向量 整个c1列 m1[c('r1','r2'), c('c2','c3')] # 按名称返回矩阵 # 转换成向量 矩阵会按列抽取为向量 as.vector() # 数组 # array() ###################################################### # 列表list v1 <- 1:5 m1 <- matrix( 1:6, nrow = 2, # ncol = 3, byrow = F, dimnames = list(c('r1', 'r2'), c('c1', 'c2', 'c3')) ) l1 <- list(com1 = v1, com2 = m1) # 列表的成分可以是不同的类型,如com1向量和com2矩阵 l1 # 长度信息 length(l1) # 名称 names(l1) # 列表索引 l1$com1 # 返回com1的成分:向量 l1[['com2']] # 返回com2的成分:矩阵 l1[[2]] # 返回2号位置的元素成分:矩阵 l1['com1'] # 返回列表:包含向量的列表 l1[2] # 返回列表:包含矩阵的列表 # 新建成分 l1$com3 <- 3:6 l1 # 释放列表 unlist() # 将列表中的各个成分组装成向量并赋予名称 ###################################################### # 数据框(特殊的列表)容纳能力更强,可包含多种成分,数据框按列创建数据 df1 <- data.frame( c1 = 2:5, c2 = LETTERS[2:5] ) df1 # 维度信息 dim(df1) ncol(df1) nrow(df1) # 行列名称 names(df1) colnames(df1) rownames(df1) # 数据框索引 df1[1:2, 2] # 返回向量 df1[, 2] # 返回向量 df1[1, ] # 返回数据框 df1[, "c1"] # 返回向量 df1['1',] # 返回数据框 df1[[2]] # 返回向量 df1$c1 # 返回向量 df1[2] # 返回数据框 df1['c1'] # 返回数据框 # 新建列 df1$c3 <- 1:4 # 新建c3列,赋值为1-4 # 也可以用于对已有列进行值的修改 df1 # 生成用于网格搜索的数据框(???这个没懂) expand.grid(mtry = 2:5, ntree = c(200, 500)) ######################################################