R对象的类型
1、原子向量
x1<-c(1:5)
x1为原子型向量
x1<-5
length x1
#1
x1为长度为1的原子向量
原子向量只能是一种类型的数据,其值储存在一维向量中。原子向量可以储存的数据类型有:整型(integer)、双整型(double)、字符型(character)、逻辑型(logical)、复数类型(complex)、原始类型(raw)。
每种原子向量都有特定的书写规范,这样R才能够准确识别,进行过运算。
下面介绍R的六种原子向量
1、双整型,又称数值型
特点:存储普通的数值型数据;可大可小,可正可负,小数点可有可无。在R中键入的数据都默认以双整型(数值型)储存。
2、整型
可通过typeof函数查看R对象的数据类型特点:不需要小数点。明确设定整型的方法是数值之后加L。
整型和双整型的特点比较:a、数据处理更常用双整型数据 b、1和1L的储存方式不同,整型的定义方式要比双整型更加精确 c、采用整型进行运算,有时会产生浮点误差。
3、字符型
特点:储存文本。书写要加双引号。字符型向量中的单个元素成为字符串(string),可以包含字母、数字或者符号。
4、逻辑型
特点:储存TRUE和FALSE,是R中布尔数据的表现形式。键入方式 TRUE或FALSE ,R默认将 T 和 F 当做TRUE和FALSE的缩写。
5、复数类型和原始类型
特点:这两种数据类型使用较少。书写规范:复数类型为 数字+数字i ;原始类型为 raw(数字)。
属性(attribute)
定义:属性是加给R对象的额外信息,不影响R的取值,在一些函数运算中会根据对象的属性决定是否进行特定操作。可以将属性理解为元数据(metadata),作用就是将与该R对象的相关信息以便捷的方式储存起来并附加给该对象。
可以用attributes函数查看对象有哪些属性,NULL表示空值,即没有任何意义。
原子向量最常见的三种属性为:名称(name)、维度(dim)和类(class)
每个属性都有相应的辅助函数,上述三种属性的辅助函数为:names(),dim()和class()。
1、names函数:可以将一串字符向量赋给对象。字符向量的长度应该等于对象的长度。每个字符元素对应于对象中相应位置的元素。要想一次性删除names,可以将NULL赋给names函数。
如上图,也可以在键入元素时直接添加名字2、dim函数:dim可将维度属性赋给原子向量(原子向量是一维向量)使其成为n维数组(array)。
函数dim(x,y),x表示行,y表示列。填充数组的过程,先填充列,再填充行。除了dim函数也可以选择matrix函数和array函数,这两种函数有更多的参数,可以调节运算过程。
矩阵
矩阵将数值存储在二维数组中。对应的函数为matrix。
matrix可以设定的参数:行数(nrow)、列数(ncol),先填满列(byrow=FALSE)
数组
array函数可以生成n维数组。
array(原子向量,dim=c(维度信息))类(class)
类属于属性的一种。更改原子向量的维度不会更改数据类型,但是会更改class属性(类)。个人对类的理解就是将一种类型的数据以不同种类的形式表现,就是说将数据换个表现形式,比如说将一维的数据用二维的方式排列,将秒数换算成天数。
上图所示:die原本是一维的数值向量,变成二维后依然是数值向量,数据类型没有改变,但是class变了 attributes函数可以查看对象的属性,但不一定显示class,如果想查看class需要使用class函数搜索 如图显示:ashape1的class属性为matrix 如果一个函数没有class属性,class函数会返回该函数的数据类型R及R包中有很多类,每个类都有自己的帮助页面,在这些类中,有一种类特别重要,那就是因子(factor)。
因子在R中用来存储分类信息。生成因子的函数factor可以将向量中的值转化为整数,存储在整数型向量中,并将两个属性添加到该整型向量,一个level属性和一个类属性,level储存显示因子值的一组标签,类属性即为factor。
使用unclass函数查看R如何储存因子:factor将字符串转化为整数型储存,每个不同的整数对应相应的标签(levels) 可以使用as.character函数将一个因子转换成字符串强制转换数据类型
R的强制转换是指:将不同的数据类型放入一个向量,R会自动讲这些数据转换为同一种数据。
强制转换的规则:向量中含有字符串,R会将所有元素转换为字符型;向量中只含有逻辑型和数值型元素,R将所有元素转换为数值型。在逻辑型元素转换为数值型元素时,TRUE被转换为1;FALSE被转换为0。对逻辑型向量进行运算,R也会进行强制转换字符型为数值型。
如果想将一种类型的数据转换为另一种特定类型可以用as系列函数
列表
列表是R的一种基本对象类型。列表是将数据组织在一维集合中,类似于原子型向量,但是列表组织的是R对象,不是具体的单个元素,列表中可以有不同的数据类型。创建向量需要用list函数。
[[1]]表示列表中的第几个元素,[1]表示列表中第几个元素的子元素。列表中的元素也可以有独立的索引系统,比如列表的元素中含有列表。数据框(data frame)
数据框是列表的二维版本,每一列是一个向量,列与列之间的数据类型可以不同,同一列内的数据类型必须相同。
注意两点:1、可以给数据框中的每个向量起名字,如上图的gene、expressionlevel、foldchange。2、每列向量必须等长,或者在R的循环规则下可以变成等长向量。 数据框的的数据类型属于列表(list),str函数可以查看有哪些对象组织在了该列表或者数据框中,如上图R自动将gene列表中的字符串转换成了因子。如果不想让R将字符串自动转换为因子,可以在data.frame函数中添加参数:stringasfactors=FALSE加载数据
.csv文件是逗号分隔值文件(comma seperated values),是目前最常用的储存数据的纯文本文件。
加载外部的数据集(dataset):在Rstudio的右上方,点击import dataset按钮,选择要添加的数据类型,这里要注意,添加数据之前,应将数据文件放置到Rstudio的工作目录。在导入文件时,可以根据导向设定一下所要读取文件的分隔符、是否把第一行当做变量名称、是否默认把字符串转换成因子(一般情况下都不要这么干)。可以在控制面板中通过head函数或者tail函数查看前几行或者后几行数据。
保存数据
将数据框保存为文本文件如.csv:用writ.csv函数,函数的局用法可以通过?writ.csv查询,在使用该函数时有三个参数很重要如图:
第一个参数是对象名;第二个参数是保存生成的文件名,注意要标明格式;第三个就是row.names,这个参数一般都把它设置为FALSE,不然每次打开可能会都要重新生成行号。保存的文件一般都会保存到目前的工作目录下。如果要更改路径可以选择Rstudio中Session-set working directory中设置。在Tools-Global options中也可以设置default working directory(when not in a project)。我在tools选项中设置了默认工作路径为D盘,我打开放在桌面的 .R 程序时,文本文件并没有保存到D盘,还是保存到了桌面,我想可能是因为此时的project就是在桌面的原因吧,如果这个时候想要把文本保存到D盘,就得借助于Session选项。
R对象按其数据结构可以分为五种,如下图,总结的非常清晰明了:
储存R的数据时,可以选择CSV,也可以选择R自带文件格式。选择CSV的优势就是文件可以共享,都能读出来。选择R自带格式的优势是占用空间小,但是除了R以外,基本上不能被其他软件打开。
读取excel文件时,先将excel另存为csv格式,然后再用R导入,这样能确保转换导入效果最好。
也可以将剪切板中的内容导入R当导入非文本文件时,用文件所对应原始软件的导出功能将该文件导出为文本文件如csv,是将数据转录为文本的最安全也是自由度最高的方法。如果不能通过原始软件导出,那就只能借助于R包了。
网友评论