R基础

李航 统计学习方法
统计学习导论 基于R应用
the element of statistical learning

R是一种区分大小写解释性语言,主要功能是由程序内置函数,用户自编函数以及对对象创建和操作所提供,每个对象都有一个类属性

library(package名):加载包
setwd():设定工作路径
getwd:查看d工作路径
<- 赋值符号,等价于 =

对象object
字符型,数值型,整形,复数型,逻辑型
最常见基本对象是向量,包含相同类型的多个对象,不同对象组成的序列叫做列表

和对象有关的东西:属性,不是所有对象都有属性,但属性是对象一部分,常见属性有
名字,维度名字,维度,类属性,长度属性,其他用户定义的属性,可以直接用attribute()查看

注意:每个对象都有一个类属性

c:小写c用来创建向量
向量:相同类型的多个元素组成的序列

NaN:数值型缺失,numeric
NA:所有的缺失值都可用NA,所以NA包含NaN;另外,NA是逻辑型

冒号用来创建等差数列
vector也可以用来创建向量,但是它通常创建的是初始向量
ex:
vector(‘character’,5)
result: “” “” “” “” “”

逻辑型是最高级别,而字符型是最低级别,即逻辑型可以方便在强制转换时转换为任意类型,但是字符型却不能随意转换

as.type(x): as.是强制转换,将x强制转换为所需type类型
ex:
as.character(x):将x向量里的元素强制转换为character型

列表
和向量相似,不同的是每个元素可以是不同类型的对象,通过[[]]索引
也可给每个对象命名 list(name1=object1, name2=object2)

矩阵
是一类特殊向量,维度属性:长度2的整形向量:行数nrow,列数ncol

矩阵可以强制转换为向量
ex:
x2<-matrix(1:6, 2, byrow=T)
as.vector(x2)

t:转秩
t(x2)

rbind:按行合并
x <- 1:3
y <- 10:12
rbind(x,y)

cbind: 按列合并
cbind(x,y)

数据框:R的一个重要数据类型,用来存储表格数据
可认为是特殊类型的列表,列表中每个元素(每类)都有同样的长度
每一列可是不同类型(矩阵是相同的)
特殊属性:行名row.names
可通过读取表格函数read.table()或read.csv()读取数据框
可通过调用data.matrix()将数据框转化为矩阵
在这里插入图片描述
在这里插入图片描述
rownames:抽取数据框行名
colnames:抽取数据框列名

向量(vector) -> 矩阵(matrix) -> 数组(array)
它们都是相同元素组成的,向量没有维度,矩阵是二维的,数组是多维的

列表(list) -> 数据框(dataframe)
向量和列表都是序列,只是向量是相同元素,而列表可以是不同元素,数据框是特殊类型的列表,列表的每个元素可以是任意长度的,但数据框每个元素是相同长度

因子
因子 <-> 分类
分类:
用于创建分类数据,两种类型:有序/无序

  • 一般由函数factor()创建,有序变量需指定参数ordered=True,等级从小到大
    输入是字符型向量,有一个单独的属性levels,本质上是整数变量有了levels的属性,每个整数有一个标签,可用unclass(x)查看
  • 以一个整数向量形式存贮类别值,同时由一个字符串组成的内部向量映射到整数上
    重要原因在于建模函数会对因子进行特殊处理
    使用字符型标签作为因子比数字更有解释性

table:可以用来查看频数
ex:
table(x1)
在这里插入图片描述

NA和NaN虽然都是null,但是NA的范围要大于NaN的范围,NaN专门指numeric的null
在这里插入图片描述
数据框是特殊类型的列表,凡是对列表可以进行处理的函数,也基本可以对数据框进行

读写数据
读写数据常用函数
在R里读取数据时会用到的几个基本函数
读取表格形式数据:read.table(), read.csv(),读取以行列形式存储的文本数据,返回数据框
逐行读取文本文件readLines(),可以读取任何格式的文本文件
读取R代码文件source()(对应的相反的函数dump)
读取被逆句法分析成文本文件的R代码文件dput(对应的相反的函数dget)
load()和unserialize()函数能把二进制文件读取到R
对应的数据存贮函数有:
write.table();write.csv();writeLines();dput();save();serialize()

read.table(), read.csv()读取表格数据,返回一个数据框
file: 文件路径/文件名/连接
header:指明是否有表头(read.table默认为F,read.csv默认为T)
sep:指明列是如何分割的(read.table默认空格,read.csv默认逗号)
colClasses:字符向量(长度是列长度),指定每列的数据类型(指定会很大程度加快读取速度,尤其是数据两大时,可先读取前面几行,通过循环找到每列的类型,再赋值给这个参数读取所有数据)
nrows:读入的行数
comment.char 指定注释字符,此行注释符右边的字符会被忽略(默认为#,指定为空""可以提高效率)
skip:从开始跳过的行数
stringAsFactors:字符作为因子处理,默认为T

读取大型数据
对于大型表格数据而言,如下几点可提效且防止R卡住
仔细阅读read.table帮助文档,会发现大量优化函数的信息
估算一下读取的数据集需要多少存贮空间
如果文件没有注释行的话,设置comment.char=""
coClasses参数非常重要,如果不指定的话,R会遍历每一列来确定每列的数据类型,数据集不太大时可以,但如果很大会消耗内存且拖慢运行速度,如果能告诉R每一列数据类型,通常速度会提升两倍,如果每列都是数值型,可以直接设置colClasses=“numeric”
设置nrows,不会加速,但能提高内存使用率,如果能告诉R读取多少行信息的话,R能计算出将占用多大内存,不用边读边计算了,设置的比实际行数多一些也没关系,仍能准确读取

colClasses:在read.csv里提前定义每列的类型;通常read.csv会先读一遍数据确定每列的类型,再读一次来获得具体的数据;而如果在read.csv里用colClasses里定义好每列类型,那么能大大加快read.csv的读取速度
ex:
d5<-read.csv(“sale.csv”, colClasses =c(“integer”, “factor”, “numeric”,“numeric”))

取子集 – 向量
[]返回的对象和原对象类型相同(可能被简化),从一个对象提取多个元素
[[]]从列表或者数据框中提取元素,且仅可提取一个元素,返回的对象类型可以不同
$可以从有命名的列表或数据框中提取元素,和[[]]类似
三种索引类型:数字索引,逻辑索引,名字索引
[]: 单中括号返回的是变量;[[]]:双中括号返回的是向量

$:可以用来显示变量里的元素名,最后直接返回元素名对应的元素

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值