R语言数据结构详解

R有多种存储数据的对象类型。基本的类型可分为:

1.向量

向量中的数据必须拥有相同类型或模式(数值型、字符型、逻辑型);
向量类似c语言中的数组;实例:
>a<-c(1,2,3,4,5,6)
>b<-c(“one”,”two”,”three”)
>c<-c(TURE,FALSE,TRUE)
标量是指只含一个元素的向量;实例:
>e<-3

访问向量中的元素(向量中的元素从1开始,这点与数组不同):
>a<-c(1,2,5,7,-5,4) >a[3]
[1] 5
>a[c(1,3,4)]
[1] 1 5 7
>a[2:5]
[1] 2 5 7 -5

2.矩阵

矩阵相当于二维向量,创建矩阵方法如下:
mymatrix<-matrix(vector,nrow=number_of_rows,ncol=number_of_columns,
                                    byrow=TURE_or_FALSE,dimnames=list
                                    char_vector_rownames,char_vector_colnames))

实例:
>m<-matrix(data=1:12,nrow=4,ncol=3,
+dimnames=list(c(“r1″,”r2″,”r3″,”r4″),
+c(“c1″,”c2″,”c3″))
>m
     c1  c2  c3
r1   1    5    9
r2  2    6    10
r3  3    7    11
r4  4    8   12

矩阵下标的使用:
> x<-matrix(1:10,nrow=2)
> x
[,1] [,2] [,3] [,4] [,5]
[1,] 1 3 5 7 9
[2,] 2 4 6 8 10
> x[2,]
[1] 2 4 6 8 10
> x[1,4]
[1] 7
> x[1,c(4,5)]
[1] 7 9

3.数组

数组与矩阵类似,但是维度可以大于2,创建数组实例:
> dim1<-c(“A1″,”A2″)
> dim2<-c(“B1″,”B2″,”B3″)
> dim3<-c(“C1″,”C2″,”C3″,”C4″)
> z<-array(1:24,c(2,3,4),dimnames=list(dim1,dim2,dim3))
> z
, , C1

B1 B2 B3
A1 1 3 5
A2 2 4 6

, , C2

B1 B2 B3
A1 7 9 11
A2 8 10 12

, , C3

B1 B2 B3
A1 13 15 17
A2 14 16 18

, , C4

B1 B2 B3
A1 19 21 23
A2 20 22 24

从数组中选取元素的方式与矩阵相同,上例中,元素z[1,2,3]为10;

4.数据框

数据框的不同列可以包含不同模式(数值型、字符型等)的数据,创建数据框:
> patientID<-c(1,2,3,4)
> age<-c(24,35,28,41)
> 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            24   Type1    Poor
2       2            35   Type2    Improved
3       3            28   Type1    Excellent
4       4            41    Type1     Poor

选取数据框中的元素:
> patientdata[1:2]
      patientID age
1        1              24
2       2              35
3       3              28
4       4              41
> patientdata[c(“diabetes”,”status”)]
   diabetes   status
1  Type1       Poor
2 Type2    Improved
3 Type1     Excellent
4 Type1       Poor
> patientdata$age
[1] 24 35 28 41

5.因子

因子即将变量的值以整数表示,可以分为有序型(即变量值存在顺序关系)和名义型(变量的值仅仅是个代号,没有顺序大小之分)。实例如下:
>diabetes<-c(“Type1″,”Type2″,”Type1″,”Type1″)
> diabetes<-factor(diabetes) > diabetes
[1] Type1 Type2 Type1 Type1
Levels: Type1 Type2

6.列表

列表是不同对象的有序集合。列表创建如下:
> g<-“My first list”
> h<-c(24,34,52,45)
> j<-matrix(1:10,nrow=5)
> k<-c(“one”,”two”,”three”)
> mylist<-list(title=g,ages=h,j,k)
> mylist
$title
[1] “My first list”

$ages
[1] 24 34 52 45

[[3]]
       [,1] [,2]
[1,]    1    6
[2,]   2    7
[3,]   3    8
[4,]   4    9
[5,]   5   10

[[4]]
[1] “one” “two” “three”

列表元素的取出:
> mylist[[2]]
[1] 24 34 52 45
> mylist[[“ages”]]
[1] 24 34 52 45

时间: 2024-08-04 05:41:45

R语言数据结构详解的相关文章

93、R语言教程详解

加载数据 > w<-read.table("test.prn",header = T) > w X.. X...1 1 A 2 2 B 3 3 C 5 4 D 5 > library(readxl) > dat<-read_excel("test.xlsx") > dat # A tibble: 4 x 2 `商品` `价格` <chr> <dbl> 1 A 2 2 B 3 3 C 5 4 D 5 &

Python中的高级数据结构详解

这篇文章主要介绍了Python中的高级数据结构详解,本文讲解了Collection.Array.Heapq.Bisect.Weakref.Copy以及Pprint这些数据结构的用法,需要的朋友可以参考下 数据结构 数据结构的概念很好理解,就是用来将数据组织在一起的结构.换句话说,数据结构是用来存储一系列关联数据的东西.在Python中有四种内建的数据结构,分别是List.Tuple.Dictionary以及Set.大部分的应用程序不需要其他类型的数据结构,但若是真需要也有很多高级数据结构可供选择

c?#?中 ?s?o?c?k?e?t? ?、?T?C?P?C?l?i?e?n?t?、?T?C?P?L?i?s?t?e?n?e?r? ?用?法?详?解

Visual C#.Net网络程序开发-Socket篇 Microsoft.Net Framework为应用程序访问Internet提供了分层的.可扩展的以及受管辖的网络服务,其名字空间System.Net和System.Net.Sockets包含丰富的类可以开发多种网络应用程序..Net类采用的分层结构允许应用程序在不同的控制级别上访问网络,开发人员可以根据需要选择针对不同的级别编制程序,这些级别几乎囊括了Internet的所有需要--从socket套接字到普通的请求/响应,更重要的是,这种分

[转]Redis内部数据结构详解-sds

本文是<Redis内部数据结构详解>系列的第二篇,讲述Redis中使用最多的一个基础数据结构:sds. 不管在哪门编程语言当中,字符串都几乎是使用最多的数据结构.sds正是在Redis中被广泛使用的字符串结构,它的全称是Simple Dynamic String.与其它语言环境中出现的字符串相比,它具有如下显著的特点: 可动态扩展内存.sds表示的字符串其内容可以修改,也可以追加.在很多语言中字符串会分为mutable和immutable两种,显然sds属于mutable类型的. 二进制安全(

线段树数据结构详解

线段树数据结构详解 Coded by Jelly_Goat. All rights reserved. 这一部分是线段树. 线段树,顾名思义,是一种树形数据结构,适用于各种求区间统一算法的动静两平衡的数据结构. 这里什么是统一算法?(自己口胡的统一算法) 比如求最大值or最小值.区间求和,一样的区间都是一样的算法,这也是和动态dp不同的地方. 前置知识1:二叉搜索树 二叉搜索树就是根节点比左儿子大,比右儿子小的一种二叉树. 前置知识2:向量存储 向量存储是用来存完全二叉树儿子和父亲关系的. 如果

【转】Redis内部数据结构详解 -- skiplist

本文是<Redis内部数据结构详解>系列的第六篇.在本文中,我们围绕一个Redis的内部数据结构--skiplist展开讨论. Redis里面使用skiplist是为了实现sorted set这种对外的数据结构.sorted set提供的操作非常丰富,可以满足非常多的应用场景.这也意味着,sorted set相对来说实现比较复杂.同时,skiplist这种数据结构对于很多人来说都比较陌生,因为大部分学校里的算法课都没有对这种数据结构进行过详细的介绍.因此,为了介绍得足够清楚,本文会比这个系列的

彻底搞定C语言指针详解

1.语言中变量的实质 要理解C指针,我认为一定要理解C中“变量”的存储实质, 所以我就从“变量”这个东西开始讲起吧! 先来理解理解内存空间吧!请看下图: 内存地址→ 6 7 8 9 10 11 12 13 ----------------------------------------------------------------- ... | | | | | | | |.. ------------------------------- ---------------------------

11_Shell语言———管道详解

管道的基本用法为: COMMAND1 | COMMAND2 | COMMAND3 | ... COMMAND1 的输出结果会作为输入参数传递给COMMAND2, COMMAND2加以处理后会传递给COMMAND3, 依此类推.管道的使用便是Linux哲学思想中"组合小程序完成复杂任务"的体现方式. 如果管道的最后一个命令是在当前shell的子shell中执行,那么该执行结果不能保存为一个变量,这样会导致当前shell无法获取执行结果,这是由shell中"本地变量只对当前she

【转】Redis内部数据结构详解——ziplist

本文是<Redis内部数据结构详解>系列的第四篇.在本文中,我们首先介绍一个新的Redis内部数据结构--ziplist,然后在文章后半部分我们会讨论一下在robj, dict和ziplist的基础上,Redis对外暴露的hash结构是怎样构建起来的. 我们在讨论中还会涉及到两个Redis配置(在redis.conf中的ADVANCED CONFIG部分): hash-max-ziplist-entries 512 hash-max-ziplist-value 64 本文的后半部分会对这两个配