操作中的常见错误
class(a) # 字符型加" "
Error: object 'a' not found
> calss("a") # class写错了
Error in calss("a") : could not find function "calss"
> class(true) # true写大写
Error: object 'true' not found
> class(TURE) # TURE写错了
Error: object 'TURE' not found
> class(TRUE)# 括号是中文的,是错误的!
Error: unexpected input in "class("
查看字符型、逻辑型和数值型向量的方式
class("a")
class(TRUE)
class(3)
比较运算的结果是逻辑值
!(4>5) #!的作用:是变否、否变是
[1] TRUE
is.numeric('4') #是否数值型数据
is.logical(F) #是否逻辑型数据
is.character('4') #是否字符型数据
#.as
as.numeric("4") #转换为数值型数据
as.logical() #转换为逻辑型数据
as.character() #转换为字符型数据
(1)用c( ) 逐一放到一起
c(1,2,3)
(2)连续的数字用" :"
1:5
(3)有重复的用rep(),有规律的用seq(),随机数用rnorm()
rep("handsome",times = 3)
seq(from = 1,to = 100 ,by = 2)
rnorm(n = 5) #符合正态分布的随机数
(4)通过组合产生更为复杂的向量
paste0(rep("gene",times = 4),1:4) #无空格连接
赋值+输出一齐实现的方法
(x <- c(seq(1,10,2))) # 法一
1 1 3 5 7 9
x <- c(seq(1,10,2));x # 法二
1 1 3 5 7 9
初级统计函数 max() ,min() , mean() , median() ,var()方差 , sd()标准差 , sum()总和, length(x) # 长度(x中元素的个数), unique(x) #去重复(第一次出现不为重复,第二次出现为重复),duplicated(x)#检查重复值 , table(x) 重复值(因子)统计 ,sort(x) #排序 , dim() 查看行列数, nrow()查看行数,ncol() 查看列数
x <- c(1,3,5,1)
unique(x)
1 1 3 5
duplicated(x)
1 FALSE FALSE FALSE TRUE
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
dim(iris)
ncol(iris)
两个向量(长度一致)的操作
x <- c(1,3,5,1)
y <- c(3,2,5,6)
x==y #比较运算
1 FALSE FALSE TRUE FALSE
x\*y #计算
1 3 6 25 6
paste(x,y,sep = "/")
1 "1/3" "3/2" "5/5" "1/6"
两个向量(长度不一致)的操作
x <- c(1,3,5,1,6)
y <- c(3,2,5)
x==y #长度不一致,发生循环补齐
Warning: longer object length is not a multiple of shorter object length
1 FALSE FALSE TRUE FALSE FALSE
paste0(rep("student",time = 7),seq(from = 2,to = 15,by = 2)
paste0("student",seq(2,15,2)) #循环补齐简化代码
1 "student2" "student4" "student6" "student8"
5 "student10" "student12" "student14"
交集,并集,差集 ,%in%
x <- c(1,3,5,1,6)
y <- c(3,2,5)
intersect(x,y)
union(x,y)
setdiff(x,y)
setdiff(y,x)
x %in% y #中的元素在y中存在吗(逻辑值)
pdf("x.pdf") #空壳
plot(x1$len,col = factor(x1$dose)) #画图
title("Have a try")
dev.off() #关掉图片编辑器,在文件中保存图片
1.逻辑值取子集 xx > 4
里是与x等长且一一对应的逻辑值向量
2.下标/位置取子集 x4 , x-4
里是由x组成的向量
x<-c(8:15)
[1] 8 9 10 11 12 13 14 15
x[4] <- 20 ;x
[1] 8 9 10 20 12 13 14 15
x[c(5:6)] <- 3;x
[1] 8 9 10 20 3 3 14 15
画图
k1 <- rnorm(12);k1
plot(k1) # index(位置下标)作为x, x值作为y~~删除线~~
k2 <- rep(1:6,each = 2);k2
boxplot(k1~k2) # k1作为x, k2作为y
取交集会去重复,而%in%取子集不会
赋值符号(<-) 和小于+符号,遇见要注意负号前加空格,才能区分
运行顺序
x <- rnorm(10)
sort(x[x<0]) #运行顺序:有嵌套的先里后外,无嵌套的从左到右
sort(x)[x<0] #与下面的相同
#y <- sort(x)
#y[x<0]
(1:10)[c(T,F)] #循环补齐 T,F
用class() 或is()族函数进行判断数据结构
data.frame(colname=data)
Error:no such file or dirextory #可能是工作目录不对,找不到这个文件
data.frame取子集1. $ df$csore 2.按坐标[] df 2,2 ,3. 按名字 df,c("gene",change") 4. 按条件 df$scoredf$score > 0, 数据框按照逻辑取子集,TURE对应的行/列留下,FALSE对应的行/列丢掉。
df1 <- data.frame(gene = paste0("gene",1:4),
change = rep(c("up","down"),each = 2),
score = c(5,3,-2,-4))
df1
df1$gene[df1$score!=5]#取gene的方式,类似于向量取子集
df1[,length(df1)] #获取最后一列数据
df1[,-length(df1)] #删除最后一列数据
数据框修改
df1[3,3] <- 5 #改一个格
df1[3,] <- c(3,3,3,3) #改一列
df1$p.value <- c(0.1,0.1,0.1,0.1) #添加一列
df1
row.names<- c(1,2,3,4) #修改行名
两个数据框的连接
merge(x, y, by = intersect(names(x), names(y)),
by.x = by, by.y = by, all = FALSE, all.x = all, all.y = all,
sort = TRUE, suffixes = c(".x",".y"), no.dups = TRUE,
incomparables = NULL, ...)
矩阵的新建和取子集
矩阵不支持$
matrix(1:9,nrow = 3)
t(matrix(1:9,nrow = 3))#转置
as.data.frame(matrix(1:9,nrow = 3)) #转换为数据框
class(matrix(1:9,nrow = 3))
[1] "matrix" "array" # "array"是特殊的数组,不用看这个
热图
m <- matrix(1:9,nrow = 3)
pheatmap::pheatmap(m) #默认聚类
pheatmap::pheatmap(m,cluster_cols = F,cluster_rows = F)#不聚类
列表新建与取子集
L <- list(m1 = matrix(1:9,nrow = 3),
m2 = matrix(2:10,nrow = 3))
L$m2 #列表取子集
L[[2]] 与上同
元素的“名字”-names()
score <- c(50,20,40,55,60)
names(score) <- c("a","w","q","f","g")
names(score)[score>54] #向量取子集
删除
rm()
rm(list=ls())
ctrl+L #清空控制台
调整顺序的方式 ac(1,3,2),
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。