title: "Jely's Note--Class Two"
date: "2023-05-10"
引用自生信技能树
【小贴士】
1.课前运行中遇到了问题,关注重点信息就好
2.脚本是乱码,可以这么解决【如图】
点UTF-8点ok就完成啦!
3.说明.R文档与.Rproject两个文件的区别
.R的文件是脚本文件,是存放代码的文件【脚本中的内容可储存,下次打开还可存在】
.Rproj快捷方式,是打开工作目录的快捷方式
【课堂内容一】
一:数值类型与应用
1.数值型--基因表达量
2.字符型--以后可用于筛选基因名称
3.逻辑型--用于比较运算的结果【可用于筛选代码的条件语句】
如<、>、>=、<=,==【是否相等】!=【是否不相等】
eg.3==5 F、3!=4 T
【用法】
1.用函数返回结果是逻辑值【记录种类】
可以运用逻辑运算,当有多个逻辑条件的连接可用&与|或!非
eg.!(4>5)T
【数据类型判断与转换-(辅助)判断数据类型的函数是class()】
2.转换as族函数实现数据类型的转换【批量操作,可将错误的类型修改成正确的类型】
as.numeric()--转换为数值型
如:>as.numeric("4")--1 4
【尽量不要出现NA缺失值】
3.多个数据如何组织?如何学习其中的规则?
【拓展:R语言中的表格中的加粗的内容【123、表头名称】不属于表格内容,属于表格的属性】
3.1 数据结构:数据框、向量、矩阵、列表
3.1.1)数据框≈表格【每一列有要求→数据类型必须是统一的,只有一种数据类型;文件与数据有区别--文件是在电脑上真实存在的,数据框没有真实存在在电脑上,只有在R语言上才显示】
3.1.2)向量=一串数据,数据框中单独拿出来的数据,视为一个整体【可生成、转换向量】
特点:只能有一种数据类型【不允许混淆】,可有重复值
(1)向量的生成
(1.1)原始用法:用函数c()将元素逐一放到一起
c(2,5,6,2,9)--1 2 5 6 2 9
【字符型必须带引号】
c("a","f","md","b")--同上连在一起
(1.2)需要批量向量生成等处理的时候:可以用for循环
也可以用“:”冒号连续的数字=连续的数字用冒号“:”
1:5--1 2 3 4 5
(1.3)常用函数:有重复的用rep();有规律的序列用seq();随机数用rnorm()
· rep("x",times = 3) 其中只有x与3属于变量【函数里的逗号=参数里的分割、细节补充参数】
当不清楚用法的时候可以用:>?rep 进行搜索,可以搜索函数及参数,可了解,可学习
· seq(from = 3,to = 21,by = 3)--等差数列
· rnorm(n = 3)--随机数函数=生成随机数 n=3,生成三个随机数
想了解其他赋值及限制,可用 >?rnorm 去搜索了解
(1.4)通过组合,产生更为复杂的向量。
常用函数从:paste0(rep("x",times = 3),1:3),其中的逗号是分为两个参数x\x\x;1\2\3\
1 "x1" "x2" "x3"
用法说明:paste0=是一种函数=可以将元素一对一的连接在一起
paste与paste0有什么区别及联系?
paste函数内有“ ”空格存在,而paste0“”没有
4.转化优先数据!
数值型与字符型放在一起---字符型
逻辑型与字符型放在一起---字符型
逻辑型与数值型放在一起---数值型
一个向量只能有一种类型,就算写错了,也会帮你改正
4.1 对单个向量进行的操作
(1)赋值给一个变量【规范写法】<-无空格/【随意写法】=
赋值是赋值,输出是输出,是两码事
x=c(1,3)【不会出结果的】
x【这样就可以输出了】
(2)赋值+输出如何一起实现,可以用()括起来
(x <- c(1,3,5,1)),可直接输出
x <- c(1,3,5,1); x,用分号;也可以
【注意:变量名称的取名须知:
(3)批量计算可以用向量计算【省掉写循环的功夫】、还可进行逻辑比较
符号说明:=赋值,==是否等于
(3.1)对单个向量进行的操作【初级函数】&【能用函数运行,就不要人工取结果】
max(x) #最大值
min(x) #最小值
mean(x) #均值
median(x) #中位数
var(x) #方差
sd(x) #标准差
sum(x) #总和
-----以下是重点
length(x) #长度
x = c(1,3,5,1---1351是元素)
sort(x)#排序
default:从小到大的排序
?sort查看帮助文档
sort(x,decreasing降序否 = F升序)
sort(x,decreasing降序否= T降序)---指定参数
举例:
length(x)
【1】 4
unique(x) #去重复----从左往右消除第二次及以上出现的数
duplicated(x) #对应元素是否重复
没有重复F,第二次出现及多次出现为T
table(x) #重复值统计
统计那几个数值
出现了几次
(3.2)对两个向量进行的操作
先对x赋值、y赋值
(3.2.1)比较运算,生成等长的逻辑向量
(3.2.2)数学计算---等位运算
paste(x,y,sep = ",")
1 "1,3" "3,2" "5,5" "1,6"
paste(x,y)默认中间有空格
1 "1 3" "3 2" "5 5" "1 6"
paste0(x,y)
1 "13" "32" "55" "16"
paste(x,y,sep = "")空字符串
1 "13" "32" "55" "16"
paste(x,y,sep = ",")sep可用任何字符分隔
1 "1,3" "3,2" "5,5" "1,6"
1.而当两个向量长度不一致
x = c(1,3,5,6,2)---谁长就站着当标准,决定返回几个结果
y = c(3,2,5)3,2---循环补齐 x == y # 啊!warning! 1 FALSE FALSE TRUE FALSE TRUE
2.等位运算,长度不一致时,循环补齐可用来简化代码
paste0(rep("x",3),1:3)【times可省略】
1 "x1" "x2" "x3"
paste0("x",1:3)将x看成为1的向量 1 "x1" "x2" "x3"
paste0("student",seq(2,15,2))
3.取交集、并集、差集对两个向量的操作:
x = c(1,3,5,1);y = c(3,2,5,6)
intersect(x,y)
1 3 5 2
union(x,y) 1 1 3 5 6 2
setdiff(x,y) 1 1 6
setdiff(y,x) numeric(0)
4.stdiff函数
5.重点!!-----%in%没有快捷键【以后可用于lncRNA】
x = c(1,3,5,1);y = c(3,2,5,6)
x %in% y #x的每个元素在y中!存在!吗
1 FALSE TRUE TRUE FALSE TRUE
只对x负责,只输出与x长度的结果,y多少个都无关
y %in% x #y的每个元素在x中存在吗 %in%【不是等位对应,而是全元素的对应--计算量更大】
【不同的工作量】
x==y,x和对应位置的y相等吗?【这是等位对应】
【写法注意:
x = c(1,3,5,1),y = c(3,2,5,6)【不可以】
x = c(1,3,5,1);y = c(3,2,5,6)【;才可以】】
6.长度只跟x相匹配。【中括号里要等长向量,且对应逻辑值的向量】
留下自己想要的要求的数值【取子集=中括号】
x=8:12
x==10
x中括号外是被取子集的向量x==10中括号内是与x长度相等的逻辑值向量-取的是true
xx==10括号内的内容是条件
xa:b取x中的a:b的值---xc(a,b)
· 根据位置取子集,-b,是其位置坐标,x-b---反选位于b的数字的内容,取除了b位置以外的数;
x=8:10; x2 9
x-2 8 10
取反是”!“
x = 8:12 x 1 8 9 10 11 12
x!x %in% c(9,13) 8 10 11 12
7.如何修改向量中的某个元素
x
1 8 9 10 11 12
#改一个元素 x4 <- 40 x 1 8 9 10 40 12
【R语言里的修改,都要赋值,没有赋值就没有发生过】
8.简单向量作图
k1 = rnorm(12);k1
plot(k1) 以下标为横坐标,以向量为纵坐标的图
下标=index位置信息=横坐标
k2 = rep(c("a","b","c","d"),each = 3);k2
1 "a" "a" "a" "b" "b" "b" "c" "c" "c" "d" "d" "d"
boxplot(k1~k2)
k1为纵坐标、k2为横坐标
括号内是数据
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。