R语言学习笔记——Day1

视频课程来源:2-1-数据基本知识-数据类型_哔哩哔哩_bilibili

代码文本来源:

R语言数据分析从入门到进阶-第1部分入门知识代码

R语言数据分析从入门到进阶-第2部分数据基本知识代码

学习进度:第一章、第二章

# 欢迎来到模型机器的线上课堂

# 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))

######################################################

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值