前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >生信马拉松 Day2

生信马拉松 Day2

原创
作者头像
阿呆的月历
发布2024-01-09 23:49:10
2850
发布2024-01-09 23:49:10
举报
文章被收录于专栏:生信马拉松生信马拉松

今天学习的内容主要是围绕 R 的向量展开

首先是R中的数据类型

主要关注的是向量、数据框、矩阵、列表
主要关注的是向量、数据框、矩阵、列表

1. 向量的生成方式

(1)用函数 c() (注意是小写的c(),大写的C()是另外的函数)逐一放到一起,例:

代码语言:R
复制
x=c(1,3,"a")
#> x
#[1] "1" "3" "a"

(2)生成连续数字可以采用 “:” ,例:

代码语言:R
复制
x=1:5
#> x
#[1] 1 2 3 4 5

(3)生成重复值用rep(),有规律的用seq()(类似等差数列),随机数用rnorm()

代码语言:R
复制
x1=rep('x',times=3)     #生成由3个字符x组成的向量
#其中times是第1个参数,因此可以省略,简写如下
x1=rep('x',3)
#> x1
#[1] "x" "x" "x"

x2=seq(from=3,to=21,by=3)   #生成从3开始,21结束,间隔为3的向量
#这里的参数名也可以省略,简写如下
x2=seq(3,21,3)
#> x2
#[1]  3  6  9 12 15 18 21

x3=rnorm(n=3)   #生成3个随机数
#适合于希望得到没有太明显规律的数据时

(4)通过组合,产生更为复杂的向量

代码语言:R
复制
paste0(rep('x',times=3),1:3)  
#[1] "x1" "x2" "x3"

2. 对单个向量可以进行的操作

(1)赋值

规范的赋值符号:<- (在windows中 alt键 + 0右侧的减号 可以快速打出来)

现在同样可以使用:=

代码语言:R
复制
#赋值+输出同时实现的方式
(x=c(1,2,5))
#[1] 1 2 5

x=c(1,2,5);x
#[1] 1 2 5
#其中 “;” 使R中两句或多句代码可以写在同一行上,否则会报错

!!变量名称不允许以数字开头,也不可以包括空格和减号,可以使用_代替空格,用.代替-

例如命名为,'x_1','x.daytime'

(2)初级统计(极其常用,要背诵)

代码语言:R
复制
max(x)  #最大值

min(x)  #最小值

mean(x)  #均值

median(x)  #中位数

var(x)  #方差

sd(x)  #标准差

sum(x)  #综合

length(x)  #长度

unique(x)  #去重复,保留第一个,去掉随后重复值,仍然为向量

duplicated(x)  #返回逻辑值,无重复时为FALSE,随后每一次重复为TRUE

table(x)  #重复值统计

sort(x)  #默认从小到大排序

!!R 能用函数代替的,就不要手动操作,这样才能应对变化的情况


3. 对两个向量的操作

首先考虑两个向量长度一致的情况

(1)比较运算 ,可生成等长的逻辑向量,即“==”,“!=”,“>”,“<”

(2)数学计算

(3)连接

代码语言:R
复制
paste()  #paste(...,sep=' '),可以连接多个向量,间隔默认是空格

paste0()  #paste0()=paste(sep=''),也就是0距离连接

以上三个均为等位运算,也就是 向量与向量 | 元素与元素 之间一对一的计算

!!当两个向量长度不一致:发生循环补齐,即把短的那个循环重复,无论这个向量在==号前还是后

循环补齐发生的条件

1、等位运算

2.两个向量长度不等

代码语言:R
复制
#因此,可以利用循环补齐简化代码
paste0(rep('student',times=7),seq(from=2,to=15,by=2))  
#利用循环补齐简化如下
paste0('student',seq(2,15,2))

(4)集合运算(不是等位运算)

代码语言:R
复制
intersect()   #交

union()   #并

setdiff(x,y)  #补,注意有先后顺序
x=c(1,2,3,4)
y=c(2,2,3,4)
setdiff(x,y)
#[1] 1
setdiff(y,x)
#numeric(0)

x %in% y   #x的每个元素都在y中吗,返回x向量等长的逻辑值
#[1] FALSE  TRUE  TRUE  TRUE

4. 向量筛选,用[]取子集

(1)按照逻辑值:中括号内需长度相等且一一对应,这个过程把TRUE对应的值挑选出来,FALSE丢弃

(2)按照下标

生信马拉松——小洁忘了怎么分身
生信马拉松——小洁忘了怎么分身

5. 如何修改向量中的某个/某些元素

依据向量的下标(索引,index)修改

代码语言:R
复制
x[4] = 40

x[c(1,5)]=c(2,4) 

!!R里面的修改需要经过赋值,没有赋值就相当于没有修改过

6. 简单向量作图

代码语言:R
复制
k1=rnorm(12);k1 #这是随机数,随机的数不同,后面的图也不会相同,很正常

plot(k1) #该图横坐标是下标,即k1的下标12个数字
这个图纵坐标是随机种子生成的,同样的代码跑出来完全可能不一样
这个图纵坐标是随机种子生成的,同样的代码跑出来完全可能不一样
代码语言:R
复制
k2=rep(c('a','b','c','d'),each=3);k2

boxplot(k1~k2)  #以k1为纵坐标,k2为横坐标画图
这个图纵坐标是随机种子生成的,同样的代码跑出来完全可能不一样
这个图纵坐标是随机种子生成的,同样的代码跑出来完全可能不一样

小TIPS:关于rep()的作用

代码语言:R
复制
rep('x',times=3)
#[1] "x" "x" "x"

rep(c('x','y'),times=3)
#[1] "x" "y" "x" "y" "x" "y"

rep(c('x','y'),times=c(1,2))
#[1] "x" "y" "y"

rep(c('x','y'),each=3)
#[1] "x" "x" "x" "y" "y" "y"

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 首先是R中的数据类型
  • 1. 向量的生成方式
  • 2. 对单个向量可以进行的操作
  • 3. 对两个向量的操作
  • 4. 向量筛选,用[]取子集
  • 5. 如何修改向量中的某个/某些元素
  • 6. 简单向量作图
  • 小TIPS:关于rep()的作用
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档