生信星球培训第四十三期

Day5--学习笔记--smartyy

2020-03-13  本文已影响0人  SmartSwift_529d

1.向量

向量分为:字符型向量逻辑型向量数字型向量
向量中所有的元素都必须是同一属性

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(ages)
[1] "numeric"
> class(colors)
[1] "character"
> class(booleans)
[1] "logical"
> length(ages)
[1] 6
> length(colors)
[1] 4
> length(booleans)
[1] 5
> 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

注意:元素访问操作不会改变原向量的内容。

补充两个与赋值有关的函数:

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
x<- rep(1:3,times=2) #1-3 重复2次
[1] 1 2 3 1 2 3

2.数据框

将两个实例文件下载到工作目录下

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

那么参数sepheader是什么含义呢?使用?read.table查看一下吧

sep和header.png
header:一个逻辑值,指示文件是否包含变量名称作为其第一行。 如果丢失,则从文件格式确定该值:当且仅当第一行包含的字段少于列数时,标头才设置为TRUE。(代码中,TRUE可以写成T)

sep:字段分隔符。 文件每一行上的值都用此字符分隔。 如果sep =“ ”(read.table的默认设置),则分隔符为“空白”,即一个或多个空格,制表符,换行符或回车符。
那么如何理解刚刚为了读取文件huahua.txt而使用的代码`sep="\t"呢?

转义符的使用.png
可见\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(X,file="jyy.RData")
> load("jyy.RData")

好,现在关闭Rstudio,等下次打开Rstudio时
需要使用X时,输入命令load("jyy.RData")加载jyy.RData文件

保存和重新加载数据框.png

所以现在我就知道如何保存一个未完成的数据框了,先赋值给一个变量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
上一篇下一篇

猜你喜欢

热点阅读