生物信息学生R入门教程–R的数据结构 3

本教程版权为《糗世界》所有,任何组织或个人不得未经书面许可转载。

在阅读本节前请自测,如果全部都知道正确答案,则可跳过本节。

  • 什么是atomic vector的常用基本类型?
  • list和atomic vector有哪些不同?
  • matrix和data frame有什么不同?
  • data frame的列可以保存list吗?
  • data frame的每一行或者每一列的长度可以不一致吗?
  • 如何将factor正确地转换为数字?

提要

在介绍R的数据类型时,笔者将直接使用其在R中的原名,而不使用翻译名。因为翻译名虽然便于记忆,但非常妨碍对R的理解与应用。

了解R的数据类型对于理解及使用R非常关键。数据类型的模糊认识可能导致错误的结果,这对于科研而言是非常危险的。

数据结构是数据类型的封装方式。R的基本数据结构分为两类(如下表所示),一类是可以存放相同类型数据的(同质的),一类是可以存放不同类型数据的(异质的)。什么是相同类型数据呢?我们知道,诸如C之类的计算机语言将数据类型化分为char, float (double), int, bool等类型,相应的,在R中,基本的数据类型被分为character, double, integer以及logical。double及integer类型又被统一称为numeric类型。如果数据都为character,或者double,或者integer,或者logical,就被称为同质的(Homogeneous),否则被称为异质的(Heterogeneous)。

维度 同质的 异质的
1维 Atomic vector List
2维 Matrix Data frame
多维 Array

需要注意的是对于1维的Atomic vector,它的长度可以是0。任何单个的数据类型,都被视为atomic vector,其长度为1。

> ## 长度为0的atomic vector
> a <- integer(0)
> length(a)
## [1] 0
> ## 单个的数据,被视为长度为1的atomic vector
> b <- "a"
> length(b)
## [1] 1
> ## 查看R的预存值pi
> pi
## [1] 3.142
> ## 查看a和b的封装类
> class(a)
## [1] "integer"
> class(b)
## [1] "character"
> class(pi)
## [1] "numeric"
> ## 查看a和pi的模式
> mode(a)
## [1] "numeric"
> mode(pi)
## [1] "numeric"
> ## 查看a和pi的存贮模式
> storage.mode(a)
## [1] "integer"
> storage.mode(pi)
## [1] "double"
> ## 查看a和b的类型
> typeof(a)
## [1] "integer"
> typeof(pi)
## [1] "double"
> ## 查看预存数据letters
> str(letters)
##  chr [1:26] "a" "b" "c" "d" "e" "f" "g" "h" "i" ...

下面,将介绍不同维度的数据结构,及其基本操作,比如如何获取维度的基本信息,如何获取数据的名称,如何获得数据的概要等。

Pages: 1 2 3 4

3 thoughts on “生物信息学生R入门教程–R的数据结构

  1. Reply feng 6月 13,2016 3:35 上午

    老师,您好,刚看到您讲的vector这里;我试着
    a<-c(1,2,3)
    typeof(a) 得到的类型却是double,class(a) 类型则是numeric,为什么不是integer,请老师解答。

  2. Reply feng 6月 13,2016 8:43 下午

    嗯,在rstudio里试了一下,确实可以了,在网上也找到了一篇博客,专门提到了这个问题,供大家参考:http://blog.sina.com.cn/s/blog_b37ea00701018uwo.html

Leave a Reply

  

  

  

%d 博主赞过: