class(1.2)numeric
is.numeric("4")
#FALSE
is.logical()
is.charater()
as.numeric()
as.logical()
as.charater()
[1] "normal" "normal" "normal"
seq(from=3,to=21,by=3)
[1] 3 6 9 12 15 18 21
rnorm(n=3)
[1] 0.1286680 -0.2964153 1.1241529
#(4)通过组合,产生更为复杂的向量。
paste0(rep("x",times=3),"_",1:3) 我不想自己数:1:nrow(a)
[1] "x_1" "x_2" "x_3"
!循环补齐思想
paste0("x",1:3)
[1] "x1" "x2" "x3"
[1] 1 3 5 1
max(x) #最大值
min(x) #最小值
mean(x) #均值
median(x) #中位数
var(x) #方差
[1] 3.666667
sd(x) #标准差
[1] 1.914854
sum(x) #总和
[1] 10
length(x) #长度,代表x里面有4个元素
[1] 4
unique(x) #去重复
[1] 1 3 5
duplicated(x) #对应元素是否重复 反一下? !
[1] FALSE FALSE FALSE TRUE
table(x) #重复值统计
x
1 3 5
2 1 1
sort(x,decreasing = F)
[1] 1 1 3 5
x = c(1,3,5,6,2)
y = c(3,2,5)
intersect(x,y)
[1] 3 5 2
union(x,y) #xy里都有
[1] 1 3 5 6 2
setdiff(x,y)# x有y没有
[1] 1 6 #如果取不出来会出现charater(0)错是numeric(0),logical(0)
setdiff(y,x)
numeric(0)
x %in% y #x的每个元素在y中存在吗
[1] FALSE TRUE TRUE FALSE TRUE
y %in% x #y的每个元素在x中存在吗
[1] TRUE TRUE TRUE
c(1,"a") numeric-character c("1","a")
c(TRUE,"a") logical-charater c("TRUE","a")
c(TRUE,FALSE,4) loogical-numeric c(1,0,4)
x <- 8:12;x
[1] 8 9 10 11 12
x[x %in% c(9,13)]
[1] 9
x[2:4]
[1] 9 10 11
x[c(1,5)]
[1] 8 12
x[-(2:4)]
[1] 8 12
所以所以[]可以取位置
x==10
[1] FALSE FALSE TRUE FALSE FALSE
x<12
[1] TRUE TRUE TRUE TRUE FALSE
所以所以[]里可以取逻辑值
那[]只能取TRUE,我想取FALSE怎么办?全部()起来取!
a
[1] 8 9 10 11 12
!(a<10)
[1] FALSE FALSE TRUE TRUE TRUE
a[!(a<10)]
[1] 10 11 12
k1 = rnorm(12);k1
[1] 0.25904416 0.89879597 0.27646147
[4] -0.04203781 -1.30432461 -0.91516370
[7] -0.29382152 0.29779891 1.03620847
[10] 0.45334718 0.66758764 2.16318875
k2 = rep(c("a","b","c","d"),each = 3);k2
[1] "a" "a" "a" "b" "b" "b" "c" "c" "c" "d"
[11] "d" "d"
plot(k1)
boxplot(k1~k2) #课后试着搜索boxplot表达什么意思
Vector一维 c(1,2,3,4,4) c("A","B","C") c(T,F,F,T,F)
Matrix 二维,矩阵?Matrix 只允许一种数据类型
Data.frame 二维,每列只允许一种数据类型
List :可装万物
str(test) #好习惯
'data.frame': 15 obs. of 3 variables:
$ Petal.Length: num 4.6 5.9 4.5 6 4 4.7 1.3 1.4 5.1 5.8 ...
$ Petal.Width : num 1.5 2.1 1.5 2.5 1.3 1.4 0.2 0.2 1.9 2.2 ...
$ Species : chr "a" "b" "a" "b" ...
class(test)
[1] "data.frame"
LETTERS=="M"
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[13] TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[25] FALSE FALSE
which(LETTERS=="M")
[1] 13
如何筛选score>0的值?
df1 <- data.frame(gene = paste0("gene",1:4),
+ change = rep(c("up","down"),each = 2),
+ score = c(5,3,-2,-4))
df1
gene change score
1 gene1 up 5
2 gene2 up 3
3 gene3 down -2
4 gene4 down -4
## 按条件(逻辑值)
df1[df1$score>0,]
gene change score
1 gene1 up 5
2 gene2 up 3
如何筛选score>0的基因?
df1$gene[df1$score>0]
[1] "gene1" "gene2"
df1[df1$score>0,1]
[1] "gene1" "gene2"
#如何取数据框的最后一列?
df1[,3]
[1] 5 3 -2 -4
df1[,ncol(df1)]
[1] 5 3 -2 -4
#如何取数据框除了最后一列以外的其他列?
df1[,-ncol(df1)]
gene change
1 gene1 up
2 gene2 up
3 gene3 down
4 gene4 down
如何修改行名列名?
#改行名和列名
rownames(df1) <- c("r1","r2","r3","r4")
#只修改某一行/列的名
colnames(df1)[2] <- "CHANGE"
如何连接两个数据框?
merge(test1,test3,by.x = "name",by.y = "NAME")
merge(test1,test3,by.x = "name",by.y = "NAME",all.x = T)
merge(test1,test3,by.x = "name",by.y = "NAME",all.y = T)
merge(test1,test3,by.x = "name",by.y = "NAME",all=T)
name blood_type weight
1 Damon O 140
2 jimmy A 145
3 nicker B 110
4 Sophie AB NA
5 tony <NA> 138
Matrix
m <- matrix(1:9, nrow = 3)
colnames(m) <- c("a","b","c") #加列名
m
a b c
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
t(m)
[,1] [,2] [,3]
a 1 2 3
b 4 5 6
c 7 8 9
as.data.frame(m)
a b c
1 1 4 7
2 2 5 8
3 3 6 9
m
a b c
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
Matrix取子集
l <- list(m1=matrix(1:9,nrow = 3),
+ m2=matrix(2:9,nrow = 2))
l
$m1
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
$m2
[,1] [,2] [,3] [,4]
[1,] 2 4 6 8
[2,] 3 5 7 9
l$m2
[,1] [,2] [,3] [,4]
[1,] 2 4 6 8
[2,] 3 5 7 9
vector添加名字
scores <- c(100,59,73,95,450)
names(scores) <- c("a","b","c","d","e")
scores
a b c d e
100 59 73 95 450
scores[c("a","c")]
a c
100 73
那我就可以通过scores选小孩了
names(scores)[scores>60]
[1] "a" "c" "d" "e"
plot(rnorm(10))
plot(seq(2,80,4))
plot(iris[,1])
只要前面是numeric就可以画
plot(iris[,1],col = iris[,5])
plot(iris[,2],col = iris[,5])
plot(iris[,3],col = iris[,5])
plot(iris[,4],col = iris[,5])
根据第五列改颜色
jimmy <- function(i){
+ plot(iris[,i],col=iris[,5])
+ }
jimmy(1)
jimmy(2)
jimmy(3)
jimmy(4)
R包安装
options("repos"=c(CRAN="http://mirrors.tuna.tsinghua.edu.cn/CRAN/"))
options(BioC_mirror="http://mirrors.ustc.edu.cn/bioc/")
install.packages()
biocmanager::install()
devtools::install_github()
R包经常提示Update all/some/none? update=F,ask=F
2.网络限制了你的进步:
满分操作:
!require(stringr)
[1] FALSE
If(!require(stringr))install.packages("stringr")
#require可以转换为逻辑值,加载成功是T,失败是F
as.logical(require(stringr))
[1] TRUE
3.列出包里有哪些函数
library(tidyr)
ls("package:tidyr")
[1] "%>%" "all_of"
[3] "any_of" "as_tibble"
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。