java产生随机数冒号,03-02

本文介绍了R语言中向量的基本操作,包括生成、逻辑判断、数学计算、数据类型转换以及取子集。讲解了如何通过c()、:、rep()、seq()和rnorm()等函数创建向量,并展示了如何使用is.族和as.族函数判断和转换数据类型。此外,还探讨了向量的组合、排序、统计分析以及向量取子集的方法,如逻辑索引和位置索引。最后,提到了如何修改向量中的元素以及简单的向量绘图技巧。
摘要由CSDN通过智能技术生成

3-2-1向量精讲

1. 逻辑型数据

1.比较运算的结果是逻辑值

,=,==(是否等于),!=(是否不相等)

2.逻辑运算 多个逻辑条件的连接

与& 有一个结果是F,最终为F

或 | 有一个结果是T,最终为T

非 ! !4>5 T

2. 数据类型的判断与转换

is 族函数,判断,返回值为T或F

is.numeric() 是否数值型数据

is.logical() 是否逻辑型数据

is.character() 是否字符型数据

2.as 族函数实现数据类型之间的转换

as.numeric() 将其他数据类型转换为数值型

as.logical() 将其他数据类型转换为逻辑型

as.character() 将其他数据类型转换为字符型

> as.numeric(3)

[1] 3

> as.logical(3>5)

[1] FALSE

> as.character("a")

[1] "a"

> as.logical("jimmy")

[1] NA

3.多个数据如何组织?

1.数据结构:

向量:数据框中单独的一列,每一列属于同一种数据类型,可以有重复值

数据框:约等于“表格”,是R语言内部存在的一种结构,不是真实存在的

矩阵

列表

4.切换Rproject

当没有打开Rstudio时:找到下载好的文件夹,双击立方体浅蓝色图标(.Rproj),直接打开;

已经打开了Rstudio:在切换Rproject 之前,检查当前打开的是否需要清空或保存(脚本、变量、图片)File--open project--找到对应文件夹--选中需要的Rproject,点击打开。

·过程中有任何弹窗都选取消 No/ don't save

·如果Rstudio运行特别慢,可删除.Rdata 这个文件

3.脚本的正确打开方式:从右下角文件面板单击打开xx.R

4.脚本打开是乱码的解决方案:file--open with encoding--UTF-8--OK

2.1向量的生成

1.用 c( ) 逐一放到一起

c(2,5,6,2,9) #数值型向量

c("a","f","md","b") #字符串数据形成的向量

·规则:只允许同一种数据类型,且允许重复值存在

2.连续的数字用冒号“:”

> 1:5

[1] 1 2 3 4 5

3.有重复的用rep(),有规律的序列用seq(),随机数用rnorm

> rep("gene",times=3) #基因这个字符串重复三次

[1] "gene" "gene" "gene"

> seq(from=3,to=21,by=3) #sequence 3,6,9,--21

[1] 3 6 9 12 15 18 21

> rnorm(n=3) #随机数(多种随机数重的一种)

[1] -0.8136543 -0.9632929 1.2423969

4.通过组合,产生更为复杂的向量。

paste0(rep("gene",times=3),1:3)

2b628050669e

image.png

练习2-2: 向量生成

1.将两种不同类型的数据用c()组合在一起,看输出结果

> c(3,"a")

[1] "3" "a"

--数值型-逻辑型-字符型

2b628050669e

image.png

2.生成1到30之间所有4的倍数,答案是

4,8,12,16,20,24,28

> seq(from=4,to=28,by=4)

[1] 4 8 12 16 20 24 28

3.生成sample4,sample8,sample12…sample28

> paste0(rep("sample",times=7),seq(from=4,to=28,by=4))

[1] "sample4" "sample8" "sample12" "sample16" "sample20" "sample24" "sample28"

3-2-2 向量取子集

2.2对单个向量进行的操作

(1)赋值给一个变量名

x = c(1,3,5,1) #随意的写法 等号

x

赋值符号不能替代等号,等号可以替代赋值符号。

x为变量名,通常不用C,因为C是个已知的函数

向量由元素组成

赋值与输出一起进行

(x

> x

[1] 1 3 5 1

> (x

[1] 1 3 5 1

(2)简单数学计算

> x+1

[1] 2 4 6 2

> log(x)

[1] 0.000000 1.098612 1.609438 0.000000

> sqrt(x)

[1] 1.000000 1.732051 2.236068 1.000000

(3)根据某条件进行判断,生成逻辑型向量

> x>3

[1] FALSE FALSE TRUE FALSE

> x==3

[1] FALSE TRUE FALSE FALSE

(4)初级统计

> max(x) #最大值

[1] 5

> min(x) #最小值

[1] 1

> mean(x) #均值

[1] 2.5

> median(x) #中位数

[1] 2

> var(x) #方差

[1] 3.666667

> sd(x) #标准差

[1] 1.914854

> sum(x) #总和

[1] 10

> length(x) #长度 向量的长度等于向量里面元素的个数

[1] 4

> unique(x) #去重复 只保留每个数字第一次出现的结果,第二次以后被去掉

[1] 1 3 5

> duplicated(x) #判断对应元素是否重复 返回结果为逻辑值的函数

[1] FALSE FALSE FALSE TRUE

> !duplicated(x)

[1] TRUE TRUE TRUE FALSE

> table(x) #重复值统计 变量有哪些个取值,分别重复了几次

x

1 3 5

2 1 1

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

[1] 1 1 3 5

> sort(x,decreasing = T) # 从大到小进行排列

[1] 5 3 1 1

2.3对两个向量进行的操作

x = c(1,3,5,1)

y = c(3,2,5,6)

(1)逻辑比较,生成等长的逻辑向量

> x == y #按位置对应

[1] FALSE FALSE TRUE FALSE

> x %in% y #x中的元素在y中吗(以X为中心)

[1] FALSE TRUE TRUE FALSE

2b628050669e

Screen Shot 2021-03-09 at 8.18.43 PM.png

(2)数学计算

> x + y

[1] 4 5 10 7

(3)“连接“

> paste(x,y,sep=":")

[1] "1:3" "3:2" "5:5" "1:6"

(4)交集、并集、差集

> intersect(x,y)#交集

[1] 3 5

> union(x,y)#并集

[1] 1 3 5 2 6

> setdiff(x,y)#谁在前面谁是核心

[1] 1

> setdiff(y,x)

[1] 2 6

当两个向量长度不一致

> x = c(1,3,5,6,2)

> y = c(3,2,5)

> x == y # 啊!warning!元素个数不同

[1] FALSE FALSE TRUE FALSE TRUE

Warning message:

In x == y : longer object length is not a multiple of shorter object length#可以直接忽略

利用循环补齐简化代码

> paste0(rep("gene",3),1:3)

[1] "gene1" "gene2" "gene3"

> paste0("gene",1:3)

[1] "gene1" "gene2" "gene3"

2.4.向量筛选(取子集)

[ ]可以将TRUE对应的值挑选出来,舍去FAUSE对应的值

> x

> #根据逻辑值取子集:中括号中是与X等长的逻辑值向量

> x[x==10]

[1] 10

> x[x<12]

[1] 8 9 10 11

> x[x %in% c(9,13)]

[1] 9

2b628050669e

image.png

> #根据位置取子集:中括号中是由X的下标组成的向量

> x[4]

[1] 11

> x[2:4] #中括号中内容为向量

[1] 9 10 11

> x[c(1,5)]

[1] 8 12

> x[-4]#去掉第4个,反选

[1] 8 9 10 12

> x[-(2:4)]#反选1和5即去掉234,注意加( )

[1] 8 12

2b628050669e

image.png

2.5.修改向量中的某个/某些元素:取子集+赋值

> x

[1] 8 9 10 11 12

> #改一个元素

> x[4]

> x

[1] 8 9 10 40 12

> #改多个元素

> x[c(1,5)]

R语言中所有的修改都需要赋值,没有赋值就是没有发生过

2.6 简单向量作图

> k1 = rnorm(12);k1

[1] 1.5583335 -0.7994595 -2.2489812 0.2934504 -0.7207822 -0.8936053 -0.1428870

[8] 0.3675650 0.5910372 1.3081505 -0.3873457 -1.4224317

> plot(k1)

2b628050669e

image.png

K1为纵坐标,横坐标是默认生成的

引入K2时

> 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) #boxplot需要1个分组向量+1个数值型向量

2b628050669e

image.png

K1为纵坐标,横坐标

练习2-4

> # 1.将基因名"ACTR3B","ANLN","BAG1","BCL2","BIRC5","RAB","ABCT","ANLN","BAD","BCF","BARC7","BALV"组成一个向量,赋值给x

> x=c("ACTR3B","ANLN","BAG1","BCL2","BIRC5","RAB","ABCT","ANLN","BAD","BCF","BARC7","BALV")

> # 2.用函数计算向量长度

> length(x)

[1] 12

> # 3.用向量取子集的方法,选出第1,3,5,7,9,11个基因名。

> x[c(1,3,5,7,9,11)]

[1] "ACTR3B" "BAG1" "BIRC5" "ABCT" "BAD" "BARC7"

> # 4.用向量取子集的方法,选出除倒数第2个以外所有的基因名。

> x[-(length(x)-1)]

[1] "ACTR3B" "ANLN" "BAG1" "BCL2" "BIRC5" "RAB" "ABCT" "ANLN" "BAD"

[10] "BCF" "BALV"

> # 5.用向量取子集的方法,选出出在c("ANLN", "BCL2","TP53")中有的基因名。

> # 提示:%in%

> y=c("ANLN", "BCL2","TP53")

> y[y%in%x]

[1] "ANLN" "BCL2"

> x[x%in%y]> #练习2-4

> # 1.将基因名"ACTR3B","ANLN","BAG1","BCL2","BIRC5","RAB","ABCT","ANLN","BAD","BCF","BARC7","BALV"组成一个向量,赋值给x

> x=c("ACTR3B","ANLN","BAG1","BCL2","BIRC5","RAB","ABCT","ANLN","BAD","BCF","BARC7","BALV")

> # 2.用函数计算向量长度

> length(x)

[1] 12

> # 3.用向量取子集的方法,选出第1,3,5,7,9,11个基因名。

> x[c(1,3,5,7,9,11)]

[1] "ACTR3B" "BAG1" "BIRC5" "ABCT" "BAD" "BARC7"

> # 4.用向量取子集的方法,选出除倒数第2个以外所有的基因名。

> x[-(length(x)-1)]

[1] "ACTR3B" "ANLN" "BAG1" "BCL2" "BIRC5" "RAB" "ABCT" "ANLN" "BAD"

[10] "BCF" "BALV"

> # 5.用向量取子集的方法,选出出在c("ANLN", "BCL2","TP53")中有的基因名。

> # 提示:%in%

> y=c("ANLN", "BCL2","TP53")

> y[y%in%x]#错

[1] "ANLN" "BCL2"

> x[x%in%y]#对

[1] "ANLN" "BCL2" "ANLN"

> # 6.修改第6个基因名为"a"并查看是否成功

> x[6]

> # 7.生成10个随机数: rnorm(n=10,mean=0,sd=18),用向量取子集的方法,筛出其中小于-2的值

> b=rnorm(10,0,18)

> b[b< -2]

[1] -18.284365 -14.128090 -12.808250 -23.562116 -2.343119 -23.283583 -14.128393

> # 6.修改第6个基因名为"a"并查看是否成功

> x[6]

> #7.生成10个随机数: rnorm(n=10,mean=0,sd=18),用向量取子集的方法,取出其中小于-2的值

> z = rnorm(n=10,mean=0,sd=18)

> z[z< -2]

[1] -14.01877 -11.14345 -28.35111 -11.65444 -11.99324

paste与paste0区别

> paste("gene",1:3)

[1] "gene 1" "gene 2" "gene 3"

> paste0("gene",1:3)

[1] "gene1" "gene2" "gene3"

> paste("gene",1:3,sep="jimmy")

[1] "genejimmy1" "genejimmy2" "genejimmy3"

> paste("gene",1:3,sep="")#与paste0("gene",1:3)结果一致,即分隔符中没有任何东西

[1] "gene1" "gene2" "gene3"

paste0后无SEP

2.7如何调整元素顺序

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值