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 ...
随机推荐
- 我的第五个程序 java的JDBC连接mysql数据库 实现输入查询
import java.sql.*; import java.util.Scanner; public class JDBCTest { public static void main(String[ ...
- 一步步教你搭建TinyOS2.1.2开发环境
(本教程使用的是VirtualBOX +ubuntu14.04+tinyos2.1.2) note:看了非常多的tinyos的安装教程.区别不是非常大,无非就是安装编译器配置环境等.尽管简单,但还是有 ...
- myeclipse中文编码错误,没有GBK选项
默认编码是UTF-8,但是导入GBK工程后,直接改为ISO-8859-1,但是还是编码错误. 用网上的: 全局编码设置:编码设置的方法:ToolBar-->Window-->Prefere ...
- Linux虚拟机安装完centos后环境配置
linux下面安装软件 yum install rpm -ivh 编译安装 三部曲:./configure make make install 卸载 rpm -e 安装方法 1)通过yum安装软件 需 ...
- POJ1365 Prime Land【质因数分解】【素数】【水题】
题目链接: http://poj.org/problem?id=1365 题目大意: 告诉你一个数的质因数x的全部底数pi和幂ei.输出x-1的质因数的全部底数和幂 解题思路: 这道题不难.可是题意特 ...
- 一张图玩转H5测试
背景 随着各种H5页面的普及和运用,并深深的影响着我们各个业务的发展,前两年也对H5测试的有着不少积累,但都是根据项目的要求,这里测试下,那里测试下,今年上半年专门成立了H5测试研究虚拟小组,专门研究 ...
- 1119 机器人走方格 V2(组合)
1119 机器人走方格 V2 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 M * N的方格,一个机器人从左上走到右下,只能向右或向下走.有多少种不同的走法?由于 ...
- 【转】通过SQL Server 2008数据库复制实现数据库同步备份
SQL Server 2008数据库复制是通过发布/订阅的机制进行多台服务器之间的数据同步,我们把它用于数据库的同步备份.这里的同步备份指的是备份服务器与主服务器进行实时数据同步,正常情况下只使用主数 ...
- UI auto程序结构组织方式
UI Auto分三个layer: 1. Object finding – 单独一个类,寻找到控件.因为UI auto最容易改动的就是UI界面,这样全部放到一起就便于统一修改. 2. Task - 对控 ...
- VS2010编译报错FileTracker error FTK1011
系统重装,TFS重新映射,编译项目报错,出现 FileTracker error FTK1011,折腾半天未搞定,网上找到答案,可能是路径更改导致(未验证): 修改MSNET.Framework 目标 ...