R语言的数据类型-二

Numbers in R a generally treated as numeric objects (i.e. double pricision real numbers), if you explicitly want an integer, you need to specify the L suffix.

Since everything in R is an object, so it can have attributes:

  • names, dimnames
  • dimensions(e.g. matrices, arrays)
  • class
  • length
  • other user-defined attributes/metadata

#向量#
用于存储数值型、字符型或逻辑型数据的一维数组,注意,单个向量中的数据必须是同一个类型,不能混合。用函数c()可创建向量:

如上,对于有规律的,如b,可以采用更简单的写法。

向量可以使用下标法索引(索引从1开始,不是从0开始):

最简单的向量只有一个元素,称为标量(注意:实际上没有标量这个类型,只是类比,本质是单元素向量): a <- 0,通常用于表示常量。

#矩阵#
一个二维数组,维数大于2建议直接使用数组,每个元素都有相同的类型。用函数matrix()可创建矩阵:

上面两个区别在于初始化时是否设置行列的名字,另外,这里用到了list()函数,它是一个特殊的向量,可以包含不同类型的元素。
使用dim()函数可以将向量转换为矩阵:

#数组#
与矩阵类似,数组里每个元素类型也必须一样,区别在于维数可以大于2。用函数array()可以创建数组:

初始化2 * 3 * 4维数组中,c(2,3,4)说明每个维度下标的最大值,上面首先给出第3维,然后每一维用矩阵列出,因此,索引数据也很方便,这里取[2,2,3],很容易得出16。

#数据框#
矩阵和数组的列的元素类型必须一致,而数据框[Data Frames]的列的元素类型不必一致,类似数据库的表,每一列的类型通常都不一样,这种数据类型在实际建模时更常用。用函数data.frame()可以创建数据框:

考虑如下学生成绩表格:

Name Chinese Math English
Jim 90 91 92
Lin 87 88 89

用数据框来表示如下:

现在想要获取chinese成绩栏一列,可如下:

第二种有点特殊,使用了记号”$”。
可以看到,输入列名字很长,可以使用如下方法简化,这里用到了with():

这样就相当于在scroe这个名称空间下进行操作,因此,输入chinese会自动被搜索到。

另外,在这个数据框中,名字可以标识一条数据,因此,在新建数据框时,增加一个标识符会更好,这样带打印输出或图形显示中会更直观:

可以看到,打印输出地数据框不使用1和2表示每一行,而是使用name来标识。

#因子#
Factors are used to represent categorical data. Factors can be unordered or ordered. One can think of a factor as an integer vector where each integer has a label.

R语言中,变量有三种类型:

  • 名义型
    Sexual(Man, Woman), 属于哪一类都可以,两个变量存放是顺序无关的。

  • 有序型
    Score(Low, Middle, High),成绩高低,这里是一个范围,并没有指出高多少,但是,从低到高是有一个顺序的。

  • 连续型
    如年龄、身高等,值都是连续变化的。

R语言中,类别(名义型)和有序类别(有序型)又称为因子,它决定了数据的分析方式以及如何进行视觉呈现。

可以看到,factor默认无序,输入”Woman”, “Man”, “Man”, “Man”后,默认按字母排序为Man、Woman,因此序号为1,2,后面查看sexual_f时对应输出就是2,1,1,1。

有时候,应用字母排序不符合实际需求,因此,需要增加参数说明按输入的顺序排序:

这里需要同时增加两个限定条件:

#列表#
列表与向量不一样,列表里的元素可以不一致,可以为向量、矩阵、数据框等的组合。用函数list()可以创建列表,列表的元素需要使用双重括号来获取,也可以给每一个元素起名字:


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 linjk121@163.com.