day5-白雪
引用自微信公众号生信星球
小白
(1)R的赋值符号不是等号,而是<-
(2)在Console 控制台输入命令,相当于Linux的命令行 #左侧控制台
(3)R的代码都是带括号的,括号必须是英文的。
(4)显示工作路径 getwd()
(5)向量是由元素组成的,元素可以是数字或者字符串。
(6)表格在R语言中改名叫数据框^_^
(7)别只复制代码,要理解其中的命令、函数的意思。函数或者命令不会用时,除了百度/谷歌搜索以外,用这个命令查看帮助:?read.table,调出对应的帮助文档,翻到example部分研究一下。
数据类型都有啥
- 向量(vector)*
- 矩阵(matrix)
- 数组 (array)
- 数据框 (date frame)*
- list
生信学习者最需要熟悉的是向量和数据框
向量向量和标量 - 元素 -数字或者字符串(由数字、字母、下划线组成的一串字符),根据元素可以区分两个词
- 标量 #一个元素组成
- 向量 #多个元素组成(有序排列的元素)
引用于微信公众号生信星球
- 使用时,一般直接给变量定义 #可以定义为数值或者其他。
> 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试一下
相关文章
- PHP 编程SQL注入问题与代码
- Redis 数据库配置与应用
- MySQL 之基础命令(精简笔记)
- MySQL 之高级命令(精简笔记)
- MySQL 之单表查询(精简笔记)
- MySQL 权限与备份管理(精简笔记)
- MySQL 存储过程与函数(精简笔记)
- PHP SQL 注入代码审计
- 教你快速实现“基于Docker快速构建基于Prometheus的MySQL监控系统”
- MySQL 字符串与时间操作函数
- 客快物流大数据项目(九十七):ClickHouse的SQL语法
- MySQL 索引与性能调优
- PHP 应用PDO技术操作数据库
- 客快物流大数据项目(九十八):ClickHouse的SQL函数
- HTTP请求头引发的注入问题 (SQL注入)
- C/C++ 静态编译SQLITE数据库API
- MySQL创建数据库基础篇
- 数据库设计范式之逻辑设计
- MySQL创建数据库基础篇
- MySQL 数据库读写分离