上期课后题目答案:
生成sample4,sample8,sample12......sample28
paste(rep("sample",time=7),seq(from=4,to=28,by=4))
###time可为小于7的任意整数,暨循环补齐
###想办法取代7
c <- seq(from=4,to=28,by=4)
paste(rep("sample",time=as.numeric(length(c))),c)
数据类型转换的优先顺序
字符型>数值型>逻辑性
赋值
赋值符号:=或<-
赋值+输出一起执行:x<c();x
对单个向量进行操作
常见初级统计:max,min,mean,median,var(方差),sd(标准差),sum
length(长度),unique(去重复),duplicated(对应元素是否重复),table(重复值统计)
对两个向量进行操作
两个向量等长
逻辑比较,生成等长的逻辑向量
x = c(1,3,5,1)
y = c(3,2,5,6)
x == y x的每个元素与y一一对应比较
x %in% y #x中的元素在y中吗
#连接
paste(x,y,sep=":")
paste(x,y,sep="")
paste(x,y,sep="-")
#paste(x,y,sep="")=paste0(x,y)两函数等同
#交集、并集、差集
intersect(x,y)#默认去重复值
union(x,y)#默认去重复值
setdiff(x,y)#寻找x中存在y不存在的值
setdiff(y,x)#寻找y中存在x不存在的值
两个向量不等长
#循环补齐
x = c(1,3,5,6,2)
y = c(3,2,5)
x == y#返回与最长向量元素相同的逻辑值
x%in%y#返回与向量x元素相同的逻辑值
#利用循环补齐简化代码
#paste0(rep("gene",3),1:3)=paste0("gene",1:3)
向量取子集方法
#利用逻辑值对向量取子集
x = c(1,3,5,6,2)
x[x==5]#取出x的第三个元素
x[x>1]#取出x大于1的子集
#按照下标取子集
x <- c(8:12);x
x[4]#取出x的第四个
x[2:4]#取出x中第二到第四个元素
x[c(1,5)]#取出x中第一个和第五个元素
###!!!中括号里面必须是可以运行的函数
x[-4]#去掉x的第四个元素
x[length(x)-1]#取出x中倒数第二个元素
x[-(2:4)]#取出x中的第一个和第五个元素
向量取子集总结:中括号里是与X等长的逻辑值向量
按照位置:中括号是由x的下标组成的向量
修改向量中的某个某些元素
#取子集+赋值
x <- c(8:12);x
x[4]<-40
x[x>10]<-10
match函数的应用
match(x,y)#根据x为模板,调整y的顺序,返回的结果是y的下标
x <- c("A","B","C","D","E")
y <- c("B","D","E","A","C")
match(x,y)
y[match(x,y)]#谁在外面,谁就在后面
引用: