生信星球学习小组笔记 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()
。
二、从一串向量取出需要的值
通过上面的结果,我们得到了有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
文件
变量保存和重新加载
重点,可以节约空间和时间,新知,此处引用老师原文
#这次没有处理完的数据下次想接着用怎么办?--学会保存和重新加载。保存的格式是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,是为什么,应该怎么解决?
- 自行分析:'object a not foun‘,说明对象没有,即代码中的a对象没有,可能是代码copy来的没有更改保存对象,也有可能是a对象被清除,也有可能a对象在上一步代码中出现错误,没有及时发现。
- 上网搜索:关键词:R语言 save()函数出现'object a not foun‘报错。(如果没有答案则翻译成英文搜索)
备忘录:来自花花和豆豆老师整理的新手常见问题
(1)R的规范赋值符号是<-,也可以用=代替 (2)在Console 控制台输入命令,相当于Linux的命令行
(3)R的代码都是带括号的,括号必须是英文的。 (4)显示工作路径 getwd()
(5)向量是由元素组成的,元素可以是数字或者字符串。
(6)表格在R语言中称为数据框^_^ (7)别只复制代码,要理解其中的命令、函数的意思。函数或者命令不会用时,除了百度/谷歌搜索以外,用这个命令查看帮助:?read.table,调出对应的帮助文档,翻到example部分研究一下。