R的基础学习之数据结构
来源:http://blog.qiubio.com:8080/archives/3753/4
1.atomic vector :一维的,放置同一类型数据的数据类型
1.1创建:由c()函数 ,seq()函数,rep()等函数创建。
>a<-c(a,b,c) #combine,将c()函数的参数联合起来成一个向量 >a<-seq(1,3) #sequence,以一定的间隔形成一个向量(等比数列),默认项差为1.
>a
#1,2,3
>a<-1:3
>a
#1,2,3 >a<-rep(1,100) #repeat,第一个参数为重复的量,第二个参数为重复次数.
#rep(x,times=1,length.out=NA,each=1)
>a<-rep(c(1,2),times=2)
>a
[1]1 2 1 2 #向量重复
>a<-rep(c(1,2),each=2)
[1]1 1 2 2 #向量元素重复
1.2访问方式:通过索引或是通过names属性
>a<letters[1:5]
>names(a)<-LETTERS[1:5] #属性的个数必须和元素个数一致
>a[1]
#[1] "a"
>a["A"]
# A
a
2.list :一维的,可以放置不同类型数据
> a <- list(num = 1:3, alphabet = letters[1:3])
>names(a)
#[1] "num" "alphabet" >a$num #通过$访问元素
[1]1 2 3
>a[[1]] #通过[[]]访问元素
[1]1 2 3 >a[1] #通过[]获得子list
$num
[1] 1 2 3
3.matrix:二维的,放置同种类型数据
3.1用matrix函数创建矩阵
>a<-11:22
>m<-matrix(a,ncol=3,nrow=4)#ncol,列数;nrow,行数
>m
## [,1] [,2] [,3]
## [1,] 11 15 1 9
## [2,] 12 16 20
## [3,] 13 17 21
## [4,] 14 18 22 >m[7] #使用访问atomic vector的方法访问matrix
[1] 17
>m[3,2]#使用访问matrix的方法访问
[1] 17
>m[,2]#访问第二列
[1] 15 16 17 18
>m[,2,drop=FALSE]#访问第二列,但仍保持matrix形式
[,1]
[1,] 15
[2,] 16
[3,] 17
[4,] 18 ####矩阵的方法和属性####
>dim(m) #矩阵的大小
[1] 4 3
>ncol(m)#矩阵的列数
[1] 3
>nrow(m)#矩阵的行数
[1] 4 >rownames(m)<-letters[1:4]#增加row的名称
>colnames(m)<-Letters[1:3]#增加column的名称
>m
## A B C
## a 1 2 3
## b 4 5 6
## c 7 8 9
## d 10 11 12 >d<-matrix(1:12,ncol=3,nrow=4)
>row<-rbind(d,m) #rbind=row bind 增加row,column保持不变
>col<-cbind(d,m) #cbind=column bind 增加column,row保持不变 >t(d) #t()函数(transpose),转置。
4.Data frame:Data frame就是由一系列长度相等的vectors构成。它继承了vector的所有方法,包括atomic vector和list的方法,比如访问某一列可以使用'$'符号。它是2维的,它一样也有和matrix相同的方法。
4.1用data.frame()函数创建
> df <- data.frame(A = 1:3, B = letters[1:3]) #接受的参数是atomic vector
> df
## A B
## 1 1 a
## 2 2 b
## 3 3 c >str(df)
## 'data.frame': 3 obs. of 2 variables:
## $ A: int 1 2 3
## $ B: Factor w/ 3 levels "a","b","c": 1 2 3 >df$A #访问元素,返回一个atomic vector.
##[1] 1 2 3
>is.atomic(df$A)
[1] TRUE >df[["B"]]
## [1] a b c
## Levels: a b c
>is.atomic([["B"]])
[1] TRUE >df[1,] #和matrix一样的方法
## A B
1 1 a >cbind(df,C=0)
## A B C
## 1 1 a 0
## 2 2 b 0
## 3 3 c 0
下表总结了不同数据结构取值的方法。赋值使用'<-'可以使用”<-“, ”=“, 以及”->“三种形式的赋值符号。但本书只推荐使用'->'做为赋值符号。
| 降维 | 保持 | |
|---|---|---|
| Vector | x[[1]] | 
x[1] | 
| List | x[[1]] | 
x[1] | 
| Factor | x[1:4, drop = T] | 
x[1:4] | 
| Array | x[1, ] or x[, 1] | 
x[1, , drop = F] or x[, 1, drop = F] | 
| Data frame | x[, 1] or x[[1]] | 
x[, 1, drop = F] or x[1] | 
R的基础学习之数据结构的更多相关文章
- 从零开始系列-R语言基础学习笔记之二 数据结构(二)
		
在上一篇中我们一起学习了R语言的数据结构第一部分:向量.数组和矩阵,这次我们开始学习R语言的数据结构第二部分:数据框.因子和列表. 一.数据框 类似于二维数组,但不同的列可以有不同的数据类型(每一列内 ...
 - 从零开始系列--R语言基础学习笔记之一 环境搭建
		
R是免费开源的软件,具有强大的数据处理和绘图等功能.下面是R开发环境的搭建过程. 一.点击网址 https://www.r-project.org/ ,进入"The R Project fo ...
 - python基础学习二 数据结构之list及相关基本操作
		
list是py内置的一种数据类型,list就是列表的意思,list就是一种有序的数据集合,可以随时增加和删除list的元素. 生活中,比如我们要列出全班同学的名字,就可以用list来表示 >&g ...
 - D01-R语言基础学习
		
R语言基础学习——D01 20190410内容纲要: 1.R的下载与安装 2.R包的安装与使用方法 (1)查看已安装的包 (2)查看是否安装过包 (3)安装包 (4)更新包 3.结果的重用 4.R处理 ...
 - D03-R语言基础学习
		
R语言基础学习——D03 20190423内容纲要: 1.导入数据 (1)从键盘输入 (2)从文本文件导入 (3)从excel文件导入 2.用户自定义函数 3.R访问MySQL数据库 (1)安装R ...
 - D02-R语言基础学习
		
R语言基础学习——D02 20190423内容纲要: 1.前言 2.向量操作 (1)常规操作 (2)不定长向量计算 (3)序列 (4)向量的删除与保留 3.列表详解 (1)列表的索引 (2)列表得元素 ...
 - R基础学习
		
R基础学习 The Art of R Programming 1.seq 产生等差数列:seq(from,to,by) seq(from,to,length) for(i in 1:length(x) ...
 - python入门到精通[三]:基础学习(2)
		
摘要:Python基础学习:列表.元组.字典.函数.序列化.正则.模块. 上一节学习了字符串.流程控制.文件及目录操作,这节介绍下列表.元组.字典.函数.序列化.正则.模块. 1.列表 python中 ...
 - SQL 基础学习(2) Joining 和function , 作业没有做,需要看百宝箱。NOsql的概念
		
SQL 基础学习(2) Joining 可以同时关联(joining)多张表进行复杂的查询. 相比于用Rails捞出数据再用Ruby进行过滤组合,使用SQL更加高效,节能. 以下是 users has ...
 
随机推荐
- 椭圆参数方程中的θ(离心角Theta)
			
椭圆参数方程中的离心角θ是交以其x轴对应外接圆上点的角度(或是交以其y轴对应内接圆上点的角度) 椭圆的参数程为:x=acosθy=bsinθ.M(x,y)椭圆上一点.过M作直线⊥X轴,交以O为圆心,以 ...
 - matlab7.0安装 win7系统详细使用方法附软件下载
			
MATLAB 7.0下载地址: 百度网盘下载地址:http://pan.baidu.com/share/link?shareid=414204&uk=2769186556 迅雷快传下载地址:h ...
 - EasyNVR摄像机无插件直播进行摄像机云台控制的接入及调用详解
			
EasyNVR云台接入及控制详解 摄像机云台控制在摄像机当中很常见摄像机能将当前状态下云台的水平角度.倾斜角度和摄像机镜头焦距等位置参数存储到设备中,需要时可以迅速调用这些参数并将云台和摄像头调整至该 ...
 - ZOJ 2059 The Twin Towers(双塔DP)
			
The Twin Towers Time Limit: 2 Seconds Memory Limit: 65536 KB Twin towers we see you standing ta ...
 - 图片热区——map的用法
			
<area>标记主要用于图像地图,通过该标记可以在图像地图中设定作用区域(又称为热点),这样当用户的鼠标移到指定的作用区域点击时,会自动链接到预先设定好的页面.其基本语法结构如下: 1 & ...
 - 动态加载和卸载 DLL
			
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
 - cxGrid时间格式与导出Excel
			
引用cxFormats单元: ShortDateFormat := 'dd/mm/yyyy'; DateSeparator := '/'; cxFormatController.UseDelphiDa ...
 - 我的Android进阶之旅------>Android中查看应用签名信息
			
一.查看自己的证书签名信息 如上一篇文章<我的Android进阶之旅------>Android中制作和查看自定义的Debug版本Android签名证书>地址:http://blog ...
 - issubclass/type/isinstance、函数和方法、反射、callable、特殊成员补充
			
一.issubclass/type/isinstance(***) 1.issubclass(参数1, 参数2):检查第一个参数是否是第二个参数的 子子孙孙类,如下示例: class Base(obj ...
 - PAT 1072. 开学寄语(20) JAVA
			
下图是上海某校的新学期开学寄语:天将降大任于斯人也,必先删其微博,卸其QQ,封其电脑,夺其手机,收其ipad,断其wifi,使其百无聊赖,然后,净面.理发.整衣,然后思过.读书.锻炼.明智.开悟.精进 ...