《学习小组Day5笔记--向伟》

今天是生信学习的第五天,今天学习了R语言的数据结构。

R拥有许多用于存储数据的对象类型,包括向量、标量、矩阵、数组、数据框和列表。它们在存储数据的类型、创建方式、结构复杂度,以及用于定位和访问其中个别元素的标记等方面均有所不同。
----源于《R语言实战》(第二版)

今天关于数据类型的学习主要体现在两个方面:向量数据框

1. 向量

1.1 创建向量
向量是用于存储数值型、字符型或逻辑型数据的一维数组。通过函数 c() 可以创建自己需求的向量。如:

> a<-c(1,2,3,4,5)
> a
[1] 1 2 3 4 5
> a<-c(1,2,"hello",4,5)
> a
[1] "1"     "2"     "hello" "4"     "5" 

我先创建了一个由1,2,3,4,5组成的向量a,输入a就能得到一组数组;然后我继续创建了一个由1,2,"hello",4,5组成的向量,而且仍然命名为a,再输入a,结果就变成了后一种结果,这表明,一个变量,无论经过多少次赋值,最终的结果总以最后一次赋值为准。
1.2 从向量中提取元素
有时候,我们创建的向量所包含的元素很多,但是在一些情况下我们只需要其中的部分元素,那么我们就需要学会如何从中提取元素。从向量中提取元素的方式有两种:
根据元素位置

> a[3]#表示向量a的第三个元素
[1] "hello"
> a[2:4]#表示向量a的第二到第四个元素
[1] "2"     "hello" "4"    
> a[c(1,5)]#表示向量的第1、5个元素
[1] "1" "5"

根据值

> a[a==5]#输出向量a中元素值为5 的向量
[1] "5"
> a[a=="hello"]#输出元素为“hello”的字符元素
[1] "hello"
> a[a<5]#表示输出向量a中<5的元素(字符元素“hello”除外)
[1] "1" "2" "4"

2. 数据框

相比简单的向量,数据框就要复杂的多。它包含不同的列,且不同的列可以包含不同模式的数据(数值型、字符型、逻辑性)。数据框可以通过函数data.frame()来创建,函数用法如下:
赋值的变量x<-data.frame(col1、col2、col3···)col表示列名。
2.1 读取本地数据
如果每次都是新建数据框,会显得很繁琐,所以有时候会采取直接利用现成的数据文件,这就需要学会如何去读取本地文件。read.table()函数可以读取表格格式文件并将其保存为一个数据框。

> read.table(file="huahua.txt",sep="\t",header = T)
Error in file(file, "rt") : 无法打开链结
此外: Warning message:
In file(file, "rt") : 无法打开文件'huahua.txt': No such file or directory

当我使用函数read.table()读取huahua.txt文件时,出现了报错,无法打开文件,这是因为这个文件我并未保存在R的工作目录下,导致读取失败。当我将文件转移到工作目录后就能成功导入文件。

> read.table(file="huahua.txt",sep="\t",header = T)
  X1 X2
1  A  1
2  B NA
3  C NA
4  D  3
5  E NA
> a<-read.table(file="huahua.txt",sep="\t",header = T)

其中header参数的含义是:表示文件是否在第一行包含了变量名的逻辑型变量;
sep含义为:分开数据值的分隔符。默认是sep“ ”,这表示一个或多个空格、制表符、换行或回车。使用sep=“,”来读取用逗号来分隔行内数据的文件,使用sep=“\t”来读取使用制表符来分割行内数据的文件。
2.2 设置列名和行名

> X<-read.csv('doudou.txt')#读取doudou.txt文件为数据框
> X
  X1 X2
1  A  1
2  B NA
3  C NA
4  D  3
5  E NA
> colnames(X)#查看列名
[1] "X1" "X2"
> rownames(X)#查看行名
[1] "1" "2" "3" "4" "5"
> colnames(X)[1]<-"bioplanet"#将列名的第一列名称改为bioplanet
> colnames(X)
[1] "bioplanet" "X2"    

行名和列名的更改方式也是如此。
2.3 导出数据框

> write.table(X,file="xiang.txt",sep = ",",quote = F)

通过write.table()函数将X数据框导出为xiang.txt到当前工作目录下。
2.4 变量的保存与重新加载

> save.image(file = "bioinfoplanet.RData")#保存当前所有变量为bioinfoplanet.RData
> save(X,file="test.RData")#仅仅保存当前所有变量中的X变量为test.RData
> load("test.RData")

此处save和save.image的用法有一些区别,后者是一种快捷操作,表示保存当前环境所有变量,前者是有选择性的选取变量进行保存。
2.5 提取数据框中的元素

X[1,2]#表示提取第一行第二列
X[1,]#表示提取第一行
X[2]#表示提取第二列

提取元素的方式和提取向量中的元素差不多,只是需要多考虑一点,及行和列。
2.6 直接使用数据框中的变量
比如以数据框中的两列做散点图,常规方法可能是这样:

a <-data.frame(case=paste("S",1:50)),values=runif(50))
 plot(a$case,a$values)

a就是一个数据框,需要使用其中的两列作图,这也就需要输入变量a多次,当变量名很长时,会很繁琐,所以就有了下面两种更简单高效的方法。
attach法

attach(a)
plot(case,values)
detach(a)

通过attach将数据框加到搜索环境中,然后直接作图,不需要输入数据框名。使用完毕后需要detach不然可能跟会和后面的操作出现冲突
with法

> with(mtcars,{
+   plot(mpg,wt)
+ })

用with函数可直接将需要的变量写到一起,完成调用。

3. 问题:

save(X,file="test.RData")这句代码如果报错X not found,是为什么,应该怎么解决?
我认为可能存在两种情况,一是x这个变量的大小写弄混了,导致出错;二是在本环境中并不存在X这个向量。

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

推荐阅读更多精彩内容