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 ...
随机推荐
- Python - json和simplejson比较(转)
From:https://stackoverflow.com/questions/712791/what-are-the-differences-between-json-and-simplejson ...
- selenium+testng+reportng+ant+jenkins集成日记
1.新建一个项目 2.编写测试脚本 3.配置ant的build.xml脚本 4.集成到jenkins,并运行 1.新建项目 注意jdk的版本要一致 eclipse Window --Prefer ...
- HDU1087 Super Jumping! Jumping! Jumping! 最大连续递增子段
Super Jumping! Jumping! Jumping! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 ...
- wtform 表单示例
用户注册 from flask import Flask, render_template, request, redirect from wtforms import Form from wtfor ...
- java打开后台程序
try{ String cmds="java -version"; Process p = Runtime.getRuntime().exec(cmds); int exitVal ...
- Handler机制原理
andriod提供了Handler 和 Looper 来满足线程间的通信.Handler先进先出原则.Looper类用来管理特定线程内对象之间的消息交换(MessageExchange). 1)Loo ...
- xpath与css基本使用方法
path使用方法 1.工具Firefox50版本以下,安装插件firebug.firepath
- jmeter对响应结果做正则、json、xpath结果测试
上面的返回结果可用于关联取值测试 具体用法详见http://www.cnblogs.com/xinjing-jingxin/p/8554338.html http://goessner.net/art ...
- 2048 worker_connections are not enough while connecting to upstream
2048 worker_connections are not enough while connecting to upstream http://mailman.nginx.org/piperma ...
- Toeplitz matrix
w https://en.wikipedia.org/wiki/Toeplitz_matrix Proof of Stolz-Cesaro theorem | planetmath.org http ...