来源: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的基础学习之数据结构的更多相关文章

  1. 从零开始系列-R语言基础学习笔记之二 数据结构(二)

    在上一篇中我们一起学习了R语言的数据结构第一部分:向量.数组和矩阵,这次我们开始学习R语言的数据结构第二部分:数据框.因子和列表. 一.数据框 类似于二维数组,但不同的列可以有不同的数据类型(每一列内 ...

  2. 从零开始系列--R语言基础学习笔记之一 环境搭建

    R是免费开源的软件,具有强大的数据处理和绘图等功能.下面是R开发环境的搭建过程. 一.点击网址 https://www.r-project.org/ ,进入"The R Project fo ...

  3. python基础学习二 数据结构之list及相关基本操作

    list是py内置的一种数据类型,list就是列表的意思,list就是一种有序的数据集合,可以随时增加和删除list的元素. 生活中,比如我们要列出全班同学的名字,就可以用list来表示 >&g ...

  4. D01-R语言基础学习

    R语言基础学习——D01 20190410内容纲要: 1.R的下载与安装 2.R包的安装与使用方法 (1)查看已安装的包 (2)查看是否安装过包 (3)安装包 (4)更新包 3.结果的重用 4.R处理 ...

  5. D03-R语言基础学习

    R语言基础学习——D03 20190423内容纲要: 1.导入数据 (1)从键盘输入 (2)从文本文件导入 (3)从excel文件导入 2.用户自定义函数   3.R访问MySQL数据库 (1)安装R ...

  6. D02-R语言基础学习

    R语言基础学习——D02 20190423内容纲要: 1.前言 2.向量操作 (1)常规操作 (2)不定长向量计算 (3)序列 (4)向量的删除与保留 3.列表详解 (1)列表的索引 (2)列表得元素 ...

  7. R基础学习

    R基础学习 The Art of R Programming 1.seq 产生等差数列:seq(from,to,by) seq(from,to,length) for(i in 1:length(x) ...

  8. python入门到精通[三]:基础学习(2)

    摘要:Python基础学习:列表.元组.字典.函数.序列化.正则.模块. 上一节学习了字符串.流程控制.文件及目录操作,这节介绍下列表.元组.字典.函数.序列化.正则.模块. 1.列表 python中 ...

  9. SQL 基础学习(2) Joining 和function , 作业没有做,需要看百宝箱。NOsql的概念

    SQL 基础学习(2) Joining 可以同时关联(joining)多张表进行复杂的查询. 相比于用Rails捞出数据再用Ruby进行过滤组合,使用SQL更加高效,节能. 以下是 users has ...

随机推荐

  1. spark 1.3 发布了

    悄悄地,spark 还是像往常一样,发布了1.3版本,从release notes可以看出,这一版本比较大的变化是1. 增加了DataFrame API,这样以后操作一些结构化的数据集时将会变的非常方 ...

  2. 挂载samb目录

    不管是ubuntu还是fedora文件管理器都带有挂载浏览smb目录的工具,但是我却找不到它的挂载点,所以想用命令行拷贝东西就没办法了,还是需要使用传统的挂载方式, mount -t cifs -o ...

  3. ios 集成阿里百川的坑-【SDK初始化-iOS】读取身份图片AppKey失败

    最简易方法调用淘宝app: 引用文件 #import <AlibcTradeSDK/AlibcTradeSDK.h> AlibcWebViewController* view = [[Al ...

  4. Laravel5.1 模型--ModelFactory

    今天要说的是模型工厂,它是可以快速生成一些测试数据的东西,之前我们介绍过Seeder,当我们使用模型访问数据时 可以用模型工厂搭配Seeder使用. 1 编写一个ModelFactory ModelF ...

  5. windows Objective-C模拟环境搭建

    安装GNUstep GNUstep Windows Installer提供了Windows平台下的Objective-C的模拟开发环境,一共有四个软件包,其中GNUstep System和GNUste ...

  6. Linux 的字符串截取很有用。有八种方法。

    假设有变量 var=http://www.aaa.com/123.htm 1. # 号截取,删除左边字符,保留右边字符. echo ${var#*//} 其中 var 是变量名,# 号是运算符,*// ...

  7. ThinkPHP部分内置函数

    D.F.S.C.L.A.I 他们都在functions.php这个文件家下面我分别说明一下他们的功能 D() 加载Model类M() 加载Model类 A() 加载Action类L() 获取语言定义C ...

  8. 【BZOJ2799】[Poi2012]Salaries 乱搞

    [BZOJ2799][Poi2012]Salaries Description 给出一棵n个结点的有根树,结点用正整数1~n编号.每个结点有一个1~n的正整数权值,不同结点的权值不相同,并且一个结点的 ...

  9. 【BZOJ2064】分裂 状压DP

    [BZOJ2064]分裂 Description 背景:和久必分,分久必和...题目描述:中国历史上上分分和和次数非常多..通读中国历史的WJMZBMR表示毫无压力.同时经常搞OI的他把这个变成了一个 ...

  10. jquery lazyload延迟加载技术的实现原理分析_jquery

    前言 懒加载技术(简称lazyload)并不是新技术,它是js程序员对网页性能优化的一种方案.lazyload的核心是按需加载.在大型网站中都有lazyload的身影,例如谷歌的图片搜索页,迅雷首页, ...