生信星球学习小组笔记 Day 5——LIU

2023-12-01 23:55:51 浏览数 (1)

生信星球学习小组笔记 2023年12月1日

今天对R语言数据结构进行学习,★划重点:向量和数据框

一、向量新知

初印象:变量、一串数字、一串字符、不止一个、数据分析的直接对象。(不一定是正确的,仅本人粗显的理解)

新知:

标量:一个元素组成的变量;向量:多个元素组成的变量

非常形象的一张图↓:

来源生信星球公众号来源生信星球公众号

说到变量,联想到中学时代所学习的函数中的X,同样,R语言中也是对某个“符合”赋值。

代码语言:txt复制
x <- c(1,2,3,4)
x <- c('a','b','c')
x <- c(1,2,3,'a')
#运行结果
> x <- c(1,2,3,4)
> class(x)
[1] "numeric"
> x <- c('a','b','c')
> class(x)
[1] "character"
> x <- c(1,2,3,'a')
> class(x)
[1] "character"

可以发现,x可以是数字或者是字符,与此同时,数字和字符一块赋值,则数字也变成了字符。

利用函数赋值:同样的,也能通过函数(自带或自定义)进行赋值。

代码语言:txt复制
x <- rnorm(5) #利用正态分布函数生成5个符合正态分布的数字
> x
[1]  0.4565827  0.0398871  0.9193298  1.0669231 -1.2529013

TIPS:不知道函数用法和作用可以使用?函数解决,如?rnorm()

rnorm()函数介绍rnorm()函数介绍

二、从一串向量取出需要的值

通过上面的结果,我们得到了有5个数值的向量。

代码语言:txt复制
> x
[1]  0.4565827  0.0398871  0.9193298  1.0669231 -1.2529013

[]取值,如:

代码语言:txt复制
x[1] #取第一个
x[-1] #除了第一个的其他结果
x[4:5] #第4至5个
x[c(1,2,5)] #第1,2,5个

获得结果

代码语言:txt复制
> x[1]
[1] 0.4565827
> x[-1]
[1]  0.0398871  0.9193298  1.0669231 -1.2529013
> x[4:5]
[1]  1.066923 -1.252901
> x[c(1,2,5)]
[1]  0.4565827  0.0398871 -1.2529013

三、数据框(data frame)

*英文名字很重要,因为一开始根本不理解“框”&“frame“。

*目前有数据文件:huahua.txt

读取文件

代码语言:txt复制
a <- read.table('huahua.txt', sep = 't', header = T) #通过read.table()读取huahua.txt文件,同时赋值给a,sep和header是参数,针对函数设置,可以用?函数详细了解,注意此处huahua.txt用了引号!

行名&列名

代码语言:txt复制
colnames(a) #列名~colnames英文单词
rownames(a) #行名,默认是1.2.3...的自然数
dim(a)#维度,即多少行多少列

结果

代码语言:txt复制
> colnames(a)
[1] "X1" "X2"
> rownames(a) 
[1] "1" "2" "3" "4" "5"
> dim(a)
[1] 5 2

数据框导出

代码语言:txt复制
write.table(a,file = "yu.txt",sep = ",",quote=F)

工作目录中出现yu.txt文件

yu.txt被导出至工作目录yu.txt被导出至工作目录

变量保存和重新加载

重点,可以节约空间和时间,新知,此处引用老师原文

#这次没有处理完的数据下次想接着用怎么办?--学会保存和重新加载。保存的格式是RData。save.image(file="bioinfoplanet.RData")#保存当前所有变量 save(a,file="test.RData")#保存其中一个变量 load("test.RData")#再次使用RData时的加载命令

导出的文件导出的文件

元素提取

个人理解:由于相比于向量多了一个维度,所以提取的时候也多了一个维度

代码语言:txt复制
a[1,3] #提取第一行第三列元素
a[,3] #提取第3列元素
a[3] #同上
a$列名 #直接提取
a[c(1,3),2] #取第1行第二列和第3行第二列元素

【作业】

save(a,file="test.RData"),这句代码如果报错object a not found,是为什么,应该怎么解决?

  1. 自行分析:'object a not foun‘,说明对象没有,即代码中的a对象没有,可能是代码copy来的没有更改保存对象,也有可能是a对象被清除,也有可能a对象在上一步代码中出现错误,没有及时发现。
  2. 上网搜索:关键词:R语言 save()函数出现'object a not foun‘报错。(如果没有答案则翻译成英文搜索)

备忘录:来自花花和豆豆老师整理的新手常见问题

(1)R的规范赋值符号是<-,也可以用=代替 (2)在Console 控制台输入命令,相当于Linux的命令行

(3)R的代码都是带括号的,括号必须是英文的。 (4)显示工作路径 getwd()

(5)向量是由元素组成的,元素可以是数字或者字符串。

(6)表格在R语言中称为数据框^_^ (7)别只复制代码,要理解其中的命令、函数的意思。函数或者命令不会用时,除了百度/谷歌搜索以外,用这个命令查看帮助:?read.table,调出对应的帮助文档,翻到example部分研究一下。

0 人点赞