Day5--学习笔记--smartyy
2020-03-13 本文已影响0人
SmartSwift_529d
1.向量
向量分为:字符型向量,逻辑型向量,数字型向量
向量中所有的元素都必须是同一属性
- 向量的创建
函数:c()
是创建向量是最常用的方式
ages <- c(4, 7, 6, 5, 6, 7) ## 数值型向量
colors <- c('red', 'black', 'blue', 'yellow') ## 字符型向量
booleans <- c(TRUE, FALSE, TRUE, FALSE, TRUE) ## 逻辑型向量
函数的参数也可以是向量,比如:
> new_ages <- c(12, ages, 17)
> new_ages <- c(12,ages,17)
> new_ages
[1] 12 4 7 6 5 6 7 17
- 查看向量的类型
函数class()
用来查看向量的类型
> class(ages)
[1] "numeric"
> class(colors)
[1] "character"
> class(booleans)
[1] "logical"
- 查看向量的大小
向量的大小是指向量中元素的个数,可以用length()
函数来查看
> length(ages)
[1] 6
> length(colors)
[1] 4
> length(booleans)
[1] 5
- 访问向量中的元素
在R中,[]
来指定索引
1.获取向量ages的第四个元素
> ages[4]
[1] 5
2.获取向量ages的第二、第三和第六个元素
> ages[c(2, 3, 6)]
[1] 7 6 7
3.访问除第四个元素之外的其它元素
> ages[-4] ## 访问除第四个元素外的其它元素
[1] 4 7 6 6 7
4.访问大于5的元素
> ages[ages > 5] ##通过逻辑运算访问所需元素
[1] 7 6 6 7
5.访问第1个到第4个元素
> ages[1:4]
[1] 4 7 6 5
注意:元素访问操作不会改变原向量的内容。
补充两个与赋值有关的函数:
-
sep()
函数
x<- seq(1,10,by = 0.5) #1-10之间每隔0.5取一个数(注意是逗号不是分号)
> x
[1] 1.0 1.5 2.0 2.5 3.0
[6] 3.5 4.0 4.5 5.0 5.5
[11] 6.0 6.5 7.0 7.5 8.0
[16] 8.5 9.0 9.5 10.0
-
rep()
函数
x<- rep(1:3,times=2) #1-3 重复2次
[1] 1 2 3 1 2 3
2.数据框
将两个实例文件下载到工作目录下
- douodu.txt
- huahua.txt
2.1读取本地数据
使用X<-read.csv('doudou.txt')
读取文件doudou.txt
> read.csv('doudou.txt')
X1 X2
1 A 1
2 B NA
3 C NA
4 D 3
5 E NA
使用read.table(file="huahua.txt",sep="\t",header=T)
读取文件huahua.txt
> 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
那么参数sep和header是什么含义呢?使用?read.table
查看一下吧
header:一个逻辑值,指示文件是否包含变量名称作为其第一行。 如果丢失,则从文件格式确定该值:当且仅当第一行包含的字段少于列数时,标头才设置为TRUE。(代码中,TRUE可以写成T)
sep:字段分隔符。 文件每一行上的值都用此字符分隔。 如果sep =“ ”(read.table的默认设置),则分隔符为“空白”,即一个或多个空格,制表符,换行符或回车符。
那么如何理解刚刚为了读取文件huahua.txt而使用的代码`sep="\t"呢?
可见\t的意思是:水平制表符。将当前位置移到下一个Tab位置
而huahua.txt中输入数据时用的正是Tab键
huahua中使用了Tab.png
2.2设置行名和列名
rownames()
查看行名
colnames()
查看列名
当没有设置行名时(如我们的实例文件生成的数据框就没有行名,只有列名),此时输入rownames()
命令将输出默认行名,即1,2,3,4
> X <- read.csv('doudou.txt') ##先数据框赋值给变量X
> 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"#有的公司返回数据,左上角第一格为空,R会自动补为x,用这个命令来修改
> X
bioplanet X2
1 A 1
2 B NA
3 C NA
4 D 3
5 E NA
> X <- read.csv('doudou.txt') ##其实我们这个数据框并不需要改,如果你已经改了,知道怎么撤销吗?用刚才的read.table命令重新赋值一遍就可以覆盖掉你刚才改瞎的了
> X
X1 X2
1 A 1
2 B NA
3 C NA
4 D 3
5 E NA
2.3数据框的导出
write.table(X,file = "yu.txt",sep = ",",quote=F)#分隔符改为逗号,字符串不加双引号(默认格式带由双引号)
> write.table(X,sep=",",quote=F)
X1,X2
1,A,1
2,B,NA
3,C,NA
4,D,3
5,E,NA
---引自生信星球
4.变量的保存与重新加载
这次没有处理完的数据下次想接着用怎么办?
学会保存和重新加载,保存的格式是.RData
-
save.image(file="bioinfoplanet.RData")
,没有指定保存哪个变量,那么就保存当前所有变量到文件夹bioinfoplanet.RData中 -
save(X,file="jyy.RData")
,保存其中一个变量X -
load("jyy.RData")
,需要使用变量X时,加载X所在文件的命令
先将变量X保存到文件jyy.RData中
> save(X,file="jyy.RData")
> load("jyy.RData")
好,现在关闭Rstudio,等下次打开Rstudio时
需要使用X时,输入命令load("jyy.RData")
加载jyy.RData文件
所以现在我就知道如何保存一个未完成的数据框了,先赋值给一个变量X,保存X到一个文件.RData,下次需要用时重新加载该文件,输入X即可得那个数据框
5.提取变量(数据框)中的元素
> load("jyy.RData")
> X
X1 X2
1 A 1
2 B NA
3 C NA
4 D 3
5 E NA
> X[1,2] ##提取第1行,第二列的元素
[1] 1
> X[2,] ##提取第2行的元素
X1 X2
2 B NA
> X[,2] ##提取第二列的元素
[1] 1 NA NA 3 NA
> X[2] ##[ ]内只有一个数字时,默认提取该数字对应的整列
X2
1 1
2 NA
3 NA
4 3
5 NA
> X[1:2] ##提取第一列到第二列的元素
X1 X2
1 A 1
2 B NA
3 C NA
4 D 3
5 E NA
> X[c(1,2)] ##提取第一列和第二列的元素
X1 X2
1 A 1
2 B NA
3 C NA
4 D 3
5 E NA
> X$X1 ## $列名可以提取该列的元素,不过只限于一列
[1] A B C D E
Levels: A B C D E