课后思考:
paste0和paste有什么区别和联系?
> x = c(1,3,5,1)
> y = c(3,2,5,6)
> #paste与paste0的区别
> 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里的数据之间默认是空格连接,也可以特别指定为其他符号,用sep = “”
paste0里的数据之间无任何连接符号
上次作业
# 1.生成1到15之间所有偶数
> seq(from=2,to = 15, by = 2)
[1] 2 4 6 8 10 12 14
> # 2.生成向量,内容为:"student2" "student4" "student6" "student8" "student10" "student12"
> # "student14"
> # 提示:paste0
> paste0(rep("student", times=7), seq(from=2,to=15,by=2))
[1] "student2" "student4" "student6" "student8" "student10" "student12" "student14"
>
##为什么times 是7??
> a = seq(from=2,to = 15, by = 2)
> length(a)
[1] 7
> paste0(rep("student", times=length(a)), a)
[1] "student2" "student4" "student6" "student8" "student10" "student12" "student14"
##如果times是5
,会发生循环补齐
> paste0(rep("student", times=5), seq(from=2,to=15,by=2))
[1] "student2" "student4" "student6" "student8" "student10" "student12" "student14"
> # 3.将两种不同类型的数据用c()组合在一起,看输出结果
> c(seq(from=2,to = 15, by = 2), paste0(rep("student", times=7), seq(from=2,to=14,by=2)))
[1] "2" "4" "6" "8" "10" "12" "14" "student2" "student4" "student6"
[11] "student8" "student10" "student12" "student14"
(x <- c(1,3,5,1))
x <- c(1,3,5,1);x
> 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
max(x) #最大值
min(x) #最小值
mean(x) #均值
median(x) #中位数
var(x) #方差
sd(x) #标准差
sum(x) #总和
length(x) #长度
unique(x) #去重复,从左往右开始,读取第一次出现的元素)
duplicated(x) #对应元素是否重复
k=duplicated(x);!ktable(x) #重复值统计
> table(x) #重复值统计
x
1 3 5
2 1 1 ##这里是元素出现的重复的次数统计
sort(x)
sort(x,decreasing = F)
sort(x,decreasing = T)
x <- c(1,3,5,1);x
[1] 1 3 5 1
> sort(x)
#对向量进行排序
[1] 1 1 3 5
> sort(x,decreasing = F) #按照递增的方式排列
[1] 1 1 3 5
> sort(x,decreasing = T)
#按照递减的方式排列
[1] 5 3 1 1
> x + y
[1] 4 5 10 7
x = c(1,3,5,1)
y = c(3,2,5,6)
> x == y
[1] FALSE FALSE TRUE FALSE
> y == x
[1] FALSE FALSE TRUE FALSE
> paste(x,y,sep=",")
[1] "1,3" "3,2" "5,5" "1,6"
发生条件:等位计算方法+向量的长度不相等
> a = c(3,2,5)
> b= c(2,1,5,6,2,2,3,4,5)
> a == b[1] FALSE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE
> intersect(x,y) #交集
[1] 3 5
> union(x,y) #并集,自动去重复
[1] 1 3 5 2 6
> setdiff(x,y)#差集 在x有,在y里没有
[1] 1
> setdiff(y,x)#差集 在y有,在x里没有
[1] 2 6
> x %in% y #x的每个元素在y中存在吗,x的第一个元素和所有的y对应,有没有,依次类推
[1] FALSE TRUE TRUE FALSE
> y %in% x #y的每个元素在x中存在吗
[1] TRUE FALSE TRUE FALSE
筛选方法:将TURE对应的值挑选出来,FALSE的丢弃([]内外的长度一定是相等的)
1. 按照逻辑值取子集,[]里代表的一个逻辑,会生成一系列逻辑值,根据逻辑值对应的元素取子集向量
> x <- 8:12
> x[x == 10] ##在x向量里取 x == 10的子集
[1] 10
> x[x < 12] ##在x向量里取 x < 12的子集
[1] 8 9 10 11
> x %in% c(9,13) # 在x向量里,每一个元素是否和c向量里有对应的逻辑值
[1] FALSE TRUE FALSE FALSE FALSE
> x[x %in% c(9,13)] #在x向量里,根据每一个元素是否和c向量里有对应的逻辑值,并取子集
[1] 9
2. 根据位置取子集, []里的代表位置,根据位置判断逻辑值,再根据逻辑值,取子集向量
> x <- 8:12
> x[4] #单独位置可以直接写
[1] 11
> x[2:4] #连续位置可以直接用冒号连接
[1] 9 10 11
> x[c(1,5)] #取两个不连续的位置的时候,要写成向量的集合,他是两个位置组成的向量
[1] 8 12
> x[-4] #- 是反选
[1] 8 9 10 12
> x[-(2:4)]
[1] 8 12
> x
[1] 8 9 10 11 12
> x[4] = 40 #改一个元素
> x
[1] 8 9 10 40 12
> x[c(1,5)] = c(80,20) #改多个元素
> x
[1] 80 9 10 40 20
简单向量作图
> k1 = rnorm(12);k1 #分号后面的k1,代表输出k1,写在了一行里
[1] -0.62274262 0.02643917 0.92799118 0.12295920 0.75581773 0.32504948 -0.51534683 -0.49656849 [9] -0.80158737 -0.21499040 -1.20585899 -0.38819129
> k2 = rep(c("a","b","c","d"),each = 3);k2
[1] "a" "a" "a" "b" "b" "b" "c" "c" "c" "d" "d" "d"
> plot(k1) #结果是一张图1,纵坐标是k1,k1的下标默认为横坐标
> boxplot(k1~k2) #结果是一张图2,k1 是纵坐标,k2是横坐标
一些杂七杂八的小记录:
向量里是元素,长度就是元素的个数
paste0(rep("x",3),1:3)可省略times,
seq的里面from to也可以省略
unexpected 代表出现代码错误的关键词
?加一个函数, 可以查询help
each和times 的区别:
> rep(c("a","b","c","d"),each = 3) #每个元素重复三次
[1] "a" "a" "a" "b" "b" "b" "c" "c" "c" "d" "d" "d"
> rep(c("a","b","c","d"),3)#times 省略了,结果是循环的样子,循环向量三次
[1] "a" "b" "c" "d" "a" "b" "c" "d" "a" "b" "c" "d"
> rep(c("a","b"),times = c(4,3)) # 第一个元素循环4次,第二个元素循环3次
[1] "a" "a" "a" "a" "b" "b" "b"
下面两个代码哪一个是对的,第一个是对的
tep = sort(log_rank_p[log_rank_p<0.05])
#log_rank_p是一个数据,在[ ]前面一定是数据
#先运行log_rank_p[log_rank_p<0.05],再运行sort
tep = sort(log_rank_p)[log_rank_p<0.05]
##先运行sort(log_rank_p),中括号里面和外面的要求是长度相等,但是这里无法一一对应
##可修改为tep = sort(log_rank_p)[sort(log_rank_p<0.05)] #中括号内外要一一对应
课上的颜色的球的例子
#blue = "b",yellow = "y",green = "g"
> x = rep(c("b","g","y"), times = c(3,4,6));x
[1] "b" "b" "b" "g" "g" "g" "g" "y" "y" "y" "y" "y" "y"
> y = c("b","g");y
[1] "b" "g"
> x %in% y
[1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE
[13] FALSE
> x[x %in% y]
[1] "b" "b" "b" "g" "g" "g" "g"
以上课程笔记
生信技能树-生信入门马拉松
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。