zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

day5-白雪

2023-02-25 18:19:37 时间

引用自微信公众号生信星球

小白

(1)R的赋值符号不是等号,而是<-

(2)在Console 控制台输入命令,相当于Linux的命令行 #左侧控制台

(3)R的代码都是带括号的,括号必须是英文的。

(4)显示工作路径 getwd()

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

(6)表格在R语言中改名叫数据框^_^

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

数据类型都有啥

  • 向量(vector)*
  • 矩阵(matrix)
  • 数组 (array)
  • 数据框 (date frame)*
  • list 生信学习者最需要熟悉的是向量和数据框向量向量和标量
  • 元素 -数字或者字符串(由数字、字母、下划线组成的一串字符),根据元素可以区分两个词
  • 标量 #一个元素组成
  • 向量 #多个元素组成(有序排列的元素)
微信图片_20230114180548.png

引用于微信公众号生信星球

  • 使用时,一般直接给变量定义 #可以定义为数值或者其他。
> a <- c(1,2,3) #将a定义为由元素1,2,3组成的向量
> a #显示a
[1] 1 2 3
> b <- 1:10 #给b赋值为1-10之间所有的整数
> b
 [1]  1  2  3  4  5  6  7  8  9 10
> a <- seq(1,10,by=0.5) #seq:生成一组数字,从from开始,到to结束,每两个数间的间隔是length,如 seq(2,10,2),会生成一组数:2 4 6 8 10(可以不写by=,效果一致)
> a
 [1]  1.0  1.5  2.0  2.5  3.0  3.5  4.0  4.5  5.0  5.5
[11]  6.0  6.5  7.0  7.5  8.0  8.5  9.0  9.5 10.0
> b <- rep(1:3,times=2) #rep:重复,1:3是内容,times=是次数
> b
[1] 1 2 3 1 2 3

赋值可以被最新的覆盖

从向量中提取元素

  • 根据元素位置
> x <- rep(1:8,times=2)
> x
 [1] 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
> x[5] #[]索引,可以理解为提取,x的第五个元素
[1] 5
> x[-8] #排除法,除了第8个元素之外剩余的元素
 [1] 1 2 3 4 5 6 7 1 2 3 4 5 6 7 8
> x[2:3] #第2到3个元素
[1] 2 3
> x[-(2:4)] #除了第2-4个元素,中括号内有小括号
 [1] 1 5 6 7 8 1 2 3 4 5 6 7 8
> x[c(1,5)] ##第1个和第5个元素
[1] 1 5
  • 根据值
> [x==6] #错误原因,括号前没有指定对象x
Error: unexpected '[' in "["
> x[x==6] #指定等于是双等号
[1] 6 6
> x[x<6] #x 中小于6的元素
 [1] 1 2 3 4 5 1 2 3 4 5
> x[x>5] #x 中大于5的元素
[1] 6 7 8 6 7 8
> x[x %in% c(6,7,8)] 存在于向量c(6,7,8)中的元素
[1] 6 7 8 6 7 8

数据框

首先获得示例数据,微信公众号后台获得

示例数据一定要放到你的工作目录下

> X <- read.csv('test.txt') # read.csv()R语言中的函数用于读取数据
> x
 [1] 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
> X
  X1 X2
1  A  1
2  B NA
3  C NA
4  D  3
5  E NA

read.csv(file, header, sep, dec) #file:包含要导入到 R 中的数据的文件的路径。header:逻辑值。如果为 TRUE,则 read.csv() 假定您的文件具有标题行,因此第 1 行是每列的名称。如果不是这种情况,您可以添加参数 header = FALSE。sep:字段分隔符 dec:文件中用于小数点的字符。

  • 读取本地数据 (huahua.txt在示例数据里有,记得一定要放在工作目录里,否则报错。)
> read.table(file = "huahua.txt",sep = "\t",header = T) #sep="\t" 表示以tab(制表符)为分隔符,sep为分隔符
  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 有标题行T,无标题行是F
> A #大小写不对真的不行
Error: object 'A' not found
> a
  X1 X2
1  A  1
2  B NA
3  C NA
4  D  3
5  E NA
  • 设置行名和列名
> A <- read.csv('doudou.txt')
> colnames(A) #查看列名
[1] "X1" "X2"
> rownames(A)
[1] "1" "2" "3" "4" "5" #查看行名,默认值的行名就是行号,1.2.3.4..
> A <- read.csv("test.txt",sep = " ",header = T,row.names = 2)
Error in data[[rlabp]] : subscript out of bounds
> A <- read.csv("test.txt",sep = " ",header = T,row.names = 1)  # row.names的意思是修改第一列为行名
> rownames(A)
[1] "A,1" "B,"  "C,"  "D,3" "E," 

colnames(X)[1]<-"bioplanet"#有的公司返回数据,左上角第一格为空,R会自动补为x,用这个命令来修改

其实我们这个数据框并不需要改,如果你已经改了,知道怎么撤销吗?用刚才的read.table命令重新赋值一遍就可以覆盖掉你刚才改瞎的了

改错了就从新读取赋值一下就可以

  • 数据框的导出> write.table(a,file="1.txt",sep=",",quote = F) #quote = F 去掉引号,分隔符是逗号read.csv(1.txt) #忘记加单引号报错

Error: unexpected symbol in "read.csv(1.txt"

read.csv('1.txt') X1 X2

1 A 1

2 B NA

3 C NA

4 D 3

5 E NA

导出了一个1.txt

  • 变量的保存与重新加载
#这次没有处理完的数据下次想接着用怎么办?--学会保存和重新加载。保存的格式是RData。
> save.image(file = "bio.RData") #保存当前所有变量,必须是.RData格式
> save(a,file = "a.RData") #保存其中一个变量
> load("a.RData") #再次使用RData时的加载命令
  • 提取元素
> a[1,2] #第1行第2列
[1] 1
> a[1,] #第1行
  X1 X2
1  A  1
> a[3] #没加,但是也表示第三列,为什么错呢,因为没有第三列
Error in `[.data.frame`(a, 3) : undefined columns selected
> a[,3]
Error in `[.data.frame`(a, , 3) : undefined columns selected
> a[,2] #第2列
[1]  1 NA NA  3 NA
> a[1] #第1列
  X1
1  A
2  B
3  C
4  D
5  E
> a[1:2] #第1列到第2列
  X1 X2
1  A  1
2  B NA
3  C NA
4  D  3
5  E NA
> a[c(1,2)] #第1列和第2列
  X1 X2
1  A  1
2  B NA
3  C NA
4  D  3
5  E NA
X$列名#也可以提取列(优秀写法,而且这个命令还优秀到不用写括号的地步,并且支持Tab自动补全哦,不过只能提取一列)

问题:save(X,file="test.RData")这句代码如果报错object X not found

可能由于大小写问题,大X换成小x试一下

微信图片_20230114180548.png