R in Action(1) 基本数据结构
一数据类型
R的数据类型包括数值型、字符型、逻辑型(布尔)、复数型和原生型,同时R有好多存储数据的对象类型,包括标量、向量、矩阵、数组、数据框和列表,如下图所示下图(图的版权神马的归原作者跟原出版社所有,赶紧避嫌,呵呵)
1、向量操作
a <- c(1, 2, 5, 3, 6, -2, 4)
b <- c("one", "two", "three")
c <- c(TRUE, TRUE, TRUE, FALSE, TRUE, FALSE)
上面把3列向量赋与a,b,c,注意这里向量内的元素必须是同一种数据类型(数值型、字符型和逻辑型)
访问向量如a[c(2,4)],将会得到a[2]跟a[4]的值,注意R与C、Python不一样,下标访问从1开始。
a[2:4] 得到a[2],a[3],a[4]三个值,这里2:4等价于c(2,3,4)
2、矩阵操作
> y <- matrix(1:10, nrow = 5, ncol = 2)
> y
[,1] [,2]
[1,] 1 6
[2,] 2 7
[3,] 3 8
[4,] 4 9
[5,] 5 10
> y <- matrix(1:10, nrow = 5, ncol = 2,byrow=TRUE)
> y
[,1] [,2]
[1,] 1 2
[2,] 3 4
[3,] 5 6
[4,] 7 8
[5,] 9 10
上面代码是创建矩阵的代码,第一段跟第二段的区别是后者采用了按行的方式填充,R中默认是按列填充。
cells <- c('东邪', '西毒', '南帝', '北丐')
rnames <- c("R1", "R2")
cnames <- c("C1", "C2")
mymatrix <- matrix(cells, nrow = 2, ncol = 2, byrow = TRUE,
dimnames = list(rnames, cnames)) > mymatrix
C1 C2
R1 "东邪" "西毒"
R2 "南帝" "北丐"
类似跟向量一样矩阵内的元素也要保持一致,上面代码可以给行列取别名。
访问矩阵:
> mymatrix[2]
[1] "南帝"
> mymatrix[2,2]
[1] "北丐"
> mymatrix[2,1:2]
C1 C2
"南帝" "北丐"
> mymatrix[2,]
C1 C2
"南帝" "北丐"
> mymatrix[,1]
R1 R2
"东邪" "南帝"
> mymatrix[,1:2]
C1 C2
R1 "东邪" "西毒"
R2 "南帝" "北丐"
3、数据框操作
这是R里应用较为广泛的数据结构,它较矩阵具有更一般的形式,data_frame <- data.frame(col1,col2,....) 其中col1,col2可以为不同的数据类型。
创建一个数据框
> patientID <- c(1, 2, 3, 4)
> age <- c(25, 34, 28, 52)
> diabetes <- c("Type1", "Type2", "Type1", "Type1")
> status <- c("Poor", "Improved", "Excellent", "Poor")
> patientdata <- data.frame(patientID, age, diabetes,
+ status)
> patientdata
patientID age diabetes status
1 1 25 Type1 Poor
2 2 34 Type2 Improved
3 3 28 Type1 Excellent
4 4 52 Type1 Poor
patientdata是一个包含4列的数据框,访问每一列可以用patientdata$age实现
对每一列做处理的时候 都要加上数据框名字+$这个确实很繁琐,可以利用{attach(),detach()}和with()函数简化
例如
plot(patientdata$patientID,patientdata$age) attach(patientdata)
plot(patientID,age)
detach(patientdata)
第一行代码可以用后三行代码替换,但是这里要注意一个问题,就是数据框里面列名不能跟外部内存对象同名。
为解决这个问题,下面直接把操作都放到with()里面。
with(patientdata,{plot(patientID,age)})
4、因子操作
这个相当于把列里面字符型元素,进行数字编码,在分类算法里面也通常对字符型特征进行数字编码(通常添加特征进行01编码)
> patientID <- c(1, 2, 3, 4)
> age <- c(25, 34, 28, 52)
> diabetes <- c("Type1", "Type2", "Type1", "Type1")
> status <- c("Poor", "Improved", "Excellent", "Poor")
> diabetes <- factor(diabetes)
> status <- factor(status, order = TRUE)
> patientdata <- data.frame(patientID, age, diabetes,
+ status)
> str(patientdata)
'data.frame': 4 obs. of 4 variables:
$ patientID: num 1 2 3 4
$ age : num 25 34 28 52
$ diabetes : Factor w/ 2 levels "Type1","Type2": 1 2 1 1
$ status : Ord.factor w/ 3 levels "Excellent"<"Improved"<..: 3 2 1 3
> summary(patientdata)
patientID age diabetes status
Min. :1.00 Min. :25.00 Type1:3 Excellent:1
1st Qu.:1.75 1st Qu.:27.25 Type2:1 Improved :1
Median :2.50 Median :31.00 Poor :2
Mean :2.50 Mean :34.75
3rd Qu.:3.25 3rd Qu.:38.50
Max. :4.00 Max. :52.00
通常内置的是按字母顺序创建,例如Excellent、Improved、Poor编码成0、1、2
5、列表操作
g <- "My First List"
h <- c(25, 26, 18, 39)
j <- matrix(1:10, nrow = 5)
k <- c("one", "two", "three")
mylist <- list(title = g, ages = h, j, k)
列表访问的时候mylist[[2]]和mylist[['age']]
R in Action(1) 基本数据结构的更多相关文章
- (2)R中的数据类型和数据结构
R中的数据结构主要面向<线性代数>中的一些概念,如向量.矩阵等.值得注意的是,R中其实没有简单数据(数值型.逻辑型.字符型等),对于简单类型会自动看做长度为1的向量.比如: > b= ...
- R in Action(0) 开篇
这几年数据挖掘的火热,也越来越多的人把R作为数据挖掘的一个辅助工具,据国际性组织kkguter统计有60%的人在挖掘过程中用到R工具,可见这个工具是多么的流行,对于数据统计.筛选以及画图绝对是神器.尽 ...
- R语言入门 :基本数据结构
1.向量 向量是R语言中最基本的数据类型,在R语言中没有单独的变量. (1) 创建向量 R语言中可以用 = 或者 <- 来赋值. 向量名 <- 向量 或 向量名 = 向量 向量的创建方 ...
- R的基础学习之数据结构
来源:http://blog.qiubio.com:8080/archives/3753/4 1.atomic vector :一维的,放置同一类型数据的数据类型 1.1创建:由c()函数 ,seq( ...
- 包--R In Action
1.4 包R提供了大量开箱即用的功能,但它最激动人心的一部分功能是通过可选模块的下载和安装来实现的.目前有2500多个①称为包(package)的用户贡献模块可从http://cran.r-proje ...
- R基础之批处理--R IN ACTION
1.5 批处理多数情况下,我们都会交互式地使用R:在提示符后输入命令,接着等待该命令的输出结果.偶尔,我们可能想要以一种重复的.标准化的.无人值守的方式执行某个R程序,例如,你可能需要每个月生成一次相 ...
- R in action读书笔记(22)第十六章 高级图形进阶(下)
16.2.4 图形参数 在lattice图形中,lattice函数默认的图形参数包含在一个很大的列表对象中,你可通过trellis.par.get()函数来获取,并用trellis.par.set() ...
- R in action读书笔记(21)第十六章 高级图形进阶(上)
16.1 R 中的四种图形系统 基础图形函数可自动调用,而grid和lattice函数的调用必须要加载相应的包(如library(lattice)).要调用ggplot2函数需下载并安装该包(inst ...
- R in action读书笔记(20)第十五章 处理缺失数据的高级方法
处理缺失数据的高级方法 15.1 处理缺失值的步骤 一个完整的处理方法通常包含以下几个步骤: (1) 识别缺失数据: (2) 检查导致数据缺失的原因: (3) 删除包含缺失值的实例或用合理的数值代替( ...
随机推荐
- lunix cat tail more等用法
cat主要有三大功能: 1.一次显示整个文件. $ cat filename 2.从键盘创建一个文件. $ cat > filename 只能创建新文件,不能编辑已有文件. 3.将几 ...
- Oracle 12c JDBC方式连接PDB数据库
1.配置监听 这里假定CDB数据库名为ORCL,PDB在CDB下面名称为PDBORCLlistener.ora添加(#后面为注释,不要添加进去) SID_LIST_LISTENER = (SID_LI ...
- 洛谷——P2853 [USACO06DEC]牛的野餐Cow Picnic
P2853 [USACO06DEC]牛的野餐Cow Picnic 题目描述 The cows are having a picnic! Each of Farmer John's K (1 ≤ K ≤ ...
- C# Ftp Client 基本操作
C# Ftp Client 上传.下载与删除 简单介绍一下Ftp Client 上传.下载与删除,这是目前比较常用的命令,各个方法其实都差不多,重点是了解Ftp命令协议. 1.建立连接 public ...
- datetimepicker使用总结
datetimepicker使用总结 2019-03-06 16:55:00 使用效果: 官方教程:http://www.bootcss.com/p/bootstrap-datetimepick ...
- 深刻理解JavaScript---闭包
JavaScript 闭包是指那些能够访问独立(自由)变量的函数 (变量在本地使用,但定义在一个封闭的作用域中).换句话说,这些函数可以“记忆”它被创建时候的环境.——这句话其实有点难以理解.我觉 ...
- Android 实现Activity后台运行
有时需要让activity在后台运行,具体实现方法如下: 在AndroidManifest.xml中,activity属性中增加: android:theme="@style/Backgro ...
- Neural Networks and Deep Learning学习笔记ch1 - 神经网络
近期開始看一些深度学习的资料.想学习一下深度学习的基础知识.找到了一个比較好的tutorial,Neural Networks and Deep Learning,认真看完了之后觉得收获还是非常多的. ...
- 老毛桃winpe优盘启动系统个性修改全攻略
PE优盘系统也有很多:大白菜.老毛桃.深度.通用PE工具箱.U大师.电脑店……这些PE优盘系统大多都会捆绑软件安装.更改主页等,一不小心,你就中招.虽然有些是可以自己去取消,但是启动画面还是带有各种L ...
- 线性回归,logistic回归分类
学习过程 下面是一个典型的机器学习的过程,首先给出一个输入数据,我们的算法会通过一系列的过程得到一个估计的函数,这个函数有能力对没有见过的新数据给出一个新的估计,也被称为构建一个模型.就如同上面的线性 ...