第二天

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包了。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容

  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 31,863评论 2 89
  • 今天学习内容如下: 1、字面量和常量2、引出变量3、变量分类、作用域和使用规则4、数据类型和分类5、boolean...
    博行天下阅读 595评论 0 3
  • 今天看的是其他人的文章哈 传送门 一、PHP主要输出方式 1、echo echo() 实际上不是一个函数,是php...
    动感超人丶阅读 283评论 0 0
  • 未来十年拼什么?共享经济时代不改变你将永远没有机会 专家:分享经济简单说就是 “人人为我、我为人人” 有人把生意二...
    满志向阅读 209评论 0 0
  • 2018年雅思考试报名官网入口已经开放啦!2018年雅思考试报名入口在哪儿?2018年雅思考试报名网站入口已开...
    上海环球教育阅读 301评论 0 0