前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >技能树Day02_直播课02-04_数据结构、R包、数据读取

技能树Day02_直播课02-04_数据结构、R包、数据读取

原创
作者头像
sheldor没耳朵
发布2024-07-18 18:24:06
1220
发布2024-07-18 18:24:06
举报
文章被收录于专栏:生物信息学习

技能树Day02

1 直播课Day02 数据结构—向量

1.1 课堂代码

大部分引用自生信技能树

代码语言:r
复制
#####2.1.向量生成🌟#####

#R markdown Mac Os插入代码块快捷键command + option + i
#(1)用 c() 结合到一起
c(2,5,6,2,9) 
代码语言:txt
复制
## [1] 2 5 6 2 9
代码语言:r
复制
c("a","f","md","b")
代码语言:txt
复制
## [1] "a"  "f"  "md" "b"
代码语言:r
复制
#(2)连续的数字用冒号“:” 
1:5
代码语言:txt
复制
## [1] 1 2 3 4 5
代码语言:r
复制
#(3)有重复的用rep(),有规律的序列用seq(),随机数用rnorm()
rep("x",times = 3)  
代码语言:txt
复制
## [1] "x" "x" "x"
代码语言:r
复制
seq(from = 3,to = 21,by = 3)
代码语言:txt
复制
## [1]  3  6  9 12 15 18 21
代码语言:r
复制
rnorm(n = 3)
代码语言:txt
复制
## [1] 0.5710862 0.2770823 1.0682798
代码语言:r
复制
#(4)通过组合,产生更为复杂的向量。
paste0(rep("x",times = 3),1:3)
代码语言:txt
复制
## [1] "x1" "x2" "x3"
代码语言:r
复制
#####2.2对单个向量进行的操作####
#(1)赋值给一个变量名
x = c(1,3,5,1) #随意的写法
x
代码语言:txt
复制
## [1] 1 3 5 1
代码语言:r
复制
x <- c(1,3,5,1) #规范的赋值符号 Alt+减号
x
代码语言:txt
复制
## [1] 1 3 5 1
代码语言:r
复制
#赋值+输出一起实现
x <- c(1,3,5,1);x
代码语言:txt
复制
## [1] 1 3 5 1
代码语言:r
复制
(x <- c(1,3,5,1))
代码语言:txt
复制
## [1] 1 3 5 1
代码语言:r
复制
#(2)简单数学计算
x+1
代码语言:txt
复制
## [1] 2 4 6 2
代码语言:r
复制
log(x)
代码语言:txt
复制
## [1] 0.000000 1.098612 1.609438 0.000000
代码语言:r
复制
sqrt(x)
代码语言:txt
复制
## [1] 1.000000 1.732051 2.236068 1.000000
代码语言:r
复制
#(3)根据某条件进行判断,生成逻辑型向量
x>3
代码语言:txt
复制
## [1] FALSE FALSE  TRUE FALSE
代码语言:r
复制
x==3
代码语言:txt
复制
## [1] FALSE  TRUE FALSE FALSE
代码语言:r
复制
#(4)初级统计
max(x) #最大值
代码语言:txt
复制
## [1] 5
代码语言:r
复制
min(x) #最小值
代码语言:txt
复制
## [1] 1
代码语言:r
复制
mean(x) #均值
代码语言:txt
复制
## [1] 2.5
代码语言:r
复制
median(x) #中位数
代码语言:txt
复制
## [1] 2
代码语言:r
复制
var(x) #方差
代码语言:txt
复制
## [1] 3.666667
代码语言:r
复制
sd(x) #标准差
代码语言:txt
复制
## [1] 1.914854
代码语言:r
复制
sum(x) #总和
代码语言:txt
复制
## [1] 10
代码语言:r
复制
length(x) #长度
代码语言:txt
复制
## [1] 4
代码语言:r
复制
unique(x) #去重复
代码语言:txt
复制
## [1] 1 3 5
代码语言:r
复制
duplicated(x) #对应元素是否重复
代码语言:txt
复制
## [1] FALSE FALSE FALSE  TRUE
代码语言:r
复制
table(x) #重复值统计
代码语言:txt
复制
## x
## 1 3 5 
## 2 1 1
代码语言:r
复制
sort(x)
代码语言:txt
复制
## [1] 1 1 3 5
代码语言:r
复制
sort(x,decreasing = F)
代码语言:txt
复制
## [1] 1 1 3 5
代码语言:r
复制
sort(x,decreasing = T)
代码语言:txt
复制
## [1] 5 3 1 1
代码语言:r
复制
#####2.3.对两个向量进行的操作#####
x = c(1,3,5,1)
y = c(3,2,5,6)
#(1)比较运算,生成等长的逻辑向量
x == y 
代码语言:txt
复制
## [1] FALSE FALSE  TRUE FALSE
代码语言:r
复制
y == x
代码语言:txt
复制
## [1] FALSE FALSE  TRUE FALSE
代码语言:r
复制
#(2)数学计算
x + y
代码语言:txt
复制
## [1]  4  5 10  7
代码语言:r
复制
#(3)连接
paste(x,y,sep=",")
代码语言:txt
复制
## [1] "1,3" "3,2" "5,5" "1,6"
代码语言:r
复制
#paste与paste0的区别
paste(x,y)
代码语言:txt
复制
## [1] "1 3" "3 2" "5 5" "1 6"
代码语言:r
复制
paste0(x,y)
代码语言:txt
复制
## [1] "13" "32" "55" "16"
代码语言:r
复制
paste(x,y,sep = "")
代码语言:txt
复制
## [1] "13" "32" "55" "16"
代码语言:r
复制
paste(x,y,sep = ",")
代码语言:txt
复制
## [1] "1,3" "3,2" "5,5" "1,6"
代码语言:r
复制
#当两个向量长度不一致
x = c(1,3,5,6,2)
y = c(3,2,5)
x == y # 啊!warning!
代码语言:txt
复制
## [1] FALSE FALSE  TRUE FALSE  TRUE
代码语言:r
复制
#循环补齐--看ppt

#利用循环补齐简化代码
paste0(rep("x",3),1:3)
代码语言:txt
复制
## [1] "x1" "x2" "x3"
代码语言:r
复制
paste0("x",1:3)
代码语言:txt
复制
## [1] "x1" "x2" "x3"
代码语言:r
复制
#(4)交集、并集、差集
intersect(x,y)
代码语言:txt
复制
## [1] 3 5 2
代码语言:r
复制
union(x,y)
代码语言:txt
复制
## [1] 1 3 5 6 2
代码语言:r
复制
setdiff(x,y)
代码语言:txt
复制
## [1] 1 6
代码语言:r
复制
setdiff(y,x)
代码语言:txt
复制
## numeric(0)
代码语言:r
复制
x %in% y #x的每个元素在y中存在吗
代码语言:txt
复制
## [1] FALSE  TRUE  TRUE FALSE  TRUE
代码语言:r
复制
y %in% x #y的每个元素在x中存在吗
代码语言:txt
复制
## [1] TRUE TRUE TRUE
代码语言:r
复制
#####2.4.向量筛选(取子集)--看ppt#####

x <- 8:12
#根据逻辑值取子集
x[x == 10]
代码语言:txt
复制
## [1] 10
代码语言:r
复制
x[x < 12]
代码语言:txt
复制
## [1]  8  9 10 11
代码语言:r
复制
x[x %in% c(9,13)]
代码语言:txt
复制
## [1] 9
代码语言:r
复制
#根据位置取子集
x[4]
代码语言:txt
复制
## [1] 11
代码语言:r
复制
x[2:4]
代码语言:txt
复制
## [1]  9 10 11
代码语言:r
复制
x[c(1,5)]
代码语言:txt
复制
## [1]  8 12
代码语言:r
复制
x[-4]
代码语言:txt
复制
## [1]  8  9 10 12
代码语言:r
复制
x[-(2:4)]
代码语言:txt
复制
## [1]  8 12
代码语言:r
复制
####2.5.修改向量中的某个/某些元素:取子集+赋值
x
代码语言:txt
复制
## [1]  8  9 10 11 12
代码语言:r
复制
#改一个元素
x[4] <- 40
x
代码语言:txt
复制
## [1]  8  9 10 40 12
代码语言:r
复制
#改多个元素
x[c(1,5)] <- c(80,20)
x
代码语言:txt
复制
## [1] 80  9 10 40 20
代码语言:r
复制
k1 = rnorm(12);k1
代码语言:txt
复制
##  [1]  0.1238212  0.9495584 -2.6507704 -1.7917652  2.3110265  0.6795380 -0.4338229 -1.0173876
##  [9] -1.5896614  0.9601339 -2.8067981 -0.9245640
代码语言:r
复制
k2 = rep(c("a","b","c","d"),each = 3);k2
代码语言:txt
复制
##  [1] "a" "a" "a" "b" "b" "b" "c" "c" "c" "d" "d" "d"
代码语言:r
复制
plot(k1)
代码语言:r
复制
#k1横坐标 k2纵坐标
boxplot(k1~k2)

1.2 练习题

代码语言:r
复制
# 练习2-2
# 1.生成1到15之间所有偶数
x <- seq(2,15,2);x 
代码语言:txt
复制
## [1]  2  4  6  8 10 12 14
代码语言:r
复制
# 2.生成向量,内容为:"student2"  "student4"  "student6"  "student8"  "student10" "student12"
# "student14" 
# 提示:paste0
x <- paste0("student",seq(2,14,2));x
代码语言:txt
复制
## [1] "student2"  "student4"  "student6"  "student8"  "student10" "student12" "student14"
代码语言:r
复制
# 3.将两种不同类型的数据用c()组合在一起,看输出结果
x <- c(2,3,4)
y <- c("a","b")
z <- c(x,y);z
代码语言:txt
复制
## [1] "2" "3" "4" "a" "b"
代码语言:r
复制
# 练习2-4
# 说明:运行load("gands.Rdata"),即可得到和使用我准备的向量g和s,
# 如有报错,说明你的代码写错或project没有正确打开
load("gands.Rdata")
# 1.用函数计算向量g的长度
length(g)
代码语言:txt
复制
## [1] 100
代码语言:r
复制
# 2.筛选出向量g中下标为偶数的基因名。
g[seq(2,length(g),2)]
代码语言:txt
复制
##  [1] "CRAMP1L"    "PRSS8"      "CRAMP1L"    "SLCO1C1"    "COMMD1"     "CCT4"      
##  [7] "RAB7A"      "ZDHHC16"    "MYL12B"     "SNRPE"      "ZNF586"     "GGT7"      
## [13] "RAB7A"      "AFG3L2"     "AC104581.1" "MPP2"       "ATP2A2"     "SNRPE"     
## [19] "PRSS8"      "ZNF461"     "CECR5"      "CLEC17A"    "ATG10"      "ATG10"     
## [25] "SLC25A25"   "KRTAP4-3"   "SLCO1C1"    "GGT7"       "GSTP1"      "UBAC1"     
## [31] "NYNRIN"     "MYL12B"     "KCND1"      "RGPD3"      "C10orf128"  "SLC30A9"   
## [37] "GGT7"       "TUBA4A"     "KLHDC8A"    "HBP1"       "MARC2"      "LCP1"      
## [43] "OR2D3"      "LIPE"       "LIPE"       "CANX"       "ATP6V1B2"   "MARC2"     
## [49] "LCP1"       "HOOK2"
代码语言:r
复制
# 3.向量g中有多少个元素在向量s中存在(要求用函数计算出具体个数)?将这些元素筛选出来
# 提示:%in%
x = g[g%in%s];x
代码语言:txt
复制
##  [1] "GFM2"          "SLCO1C1"       "NYNRIN"        "COMMD1"        "COMMD1"       
##  [6] "AC017081.1"    "RAB7A"         "CASKIN2"       "GGT7"          "SNRPE"        
## [11] "RGPD3"         "ZNF586"        "COMMD1"        "GGT7"          "URB1"         
## [16] "RAB7A"         "MPP2"          "AFG3L2"        "URB1"          "AC104581.1"   
## [21] "MPP2"          "SNRPE"         "ARHGAP1"       "ZNF461"        "OR2D3"        
## [26] "CECR5"         "SPDL1"         "CLEC17A"       "ZNF461"        "ATG10"        
## [31] "ATG10"         "ATG10"         "SLC25A25"      "SLC30A9"       "SLCO1C1"      
## [36] "GGT7"          "CASKIN2"       "GSTP1"         "MPP2"          "NYNRIN"       
## [41] "INTS12"        "MPP2"          "RGPD3"         "RGPD3"         "SLC30A9"      
## [46] "C10orf128"     "HBD"           "SLC30A9"       "GGT7"          "HEPH"         
## [51] "RP5-1021I20.4" "KLHDC8A"       "HBD"           "ZNF586"        "CECR5"        
## [56] "OR2D3"         "LIPE"          "INTS12"        "LIPE"          "SPDL1"        
## [61] "SLCO1C1"       "GGT7"          "CECR5"
代码语言:r
复制
length(x)
代码语言:R
复制
## [1] 63

1.3 知识点

R数据结构
脚本是乱码的解决办法
rmd生成md的方式
代码语言:R
复制
knitr:knit("*.rmd")
R特有的变量保存格式:Rdata
思维导图

2 直播课Day03 数据结构—数据框、矩阵、列表

2.1 课堂代码

代码语言:r
复制
#重点:数据框
#1.数据框来源
# (1)用代码新建
# (2)由已有数据转换或处理得到
# (3)读取表格文件
# (4)R语言内置数据

#2.新建和读取数据框
df1 <- data.frame(gene   = paste0("gene",1:4),
                 change  = rep(c("up","down"),each = 2),
                 score   = c(5,3,-2,-4))
df1
代码语言:txt
复制
##    gene change score
## 1 gene1     up     5
## 2 gene2     up     3
## 3 gene3   down    -2
## 4 gene4   down    -4
代码语言:r
复制
df2 <- read.csv("gene.csv")
df2
代码语言:txt
复制
##    gene change score
## 1 gene1     up     5
## 2 gene2     up     3
## 3 gene3   down    -2
## 4 gene4   down    -4
代码语言:r
复制
#3.数据框属性
#
dim(df1)
代码语言:txt
复制
## [1] 4 3
代码语言:r
复制
nrow(df1)
代码语言:txt
复制
## [1] 4
代码语言:r
复制
ncol(df1)
代码语言:txt
复制
## [1] 3
代码语言:r
复制
#
rownames(df1)
代码语言:txt
复制
## [1] "1" "2" "3" "4"
代码语言:r
复制
colnames(df1)
代码语言:txt
复制
## [1] "gene"   "change" "score"
代码语言:r
复制
#4.数据框取子集
df1$gene  #删掉score,按tab键试试
代码语言:txt
复制
## [1] "gene1" "gene2" "gene3" "gene4"
代码语言:r
复制
mean(df1$score)
代码语言:txt
复制
## [1] 0.5
代码语言:r
复制
## 按坐标
df1[2,2]
代码语言:txt
复制
## [1] "up"
代码语言:r
复制
df1[2,]
代码语言:txt
复制
##    gene change score
## 2 gene2     up     3
代码语言:r
复制
df1[,2]
代码语言:txt
复制
## [1] "up"   "up"   "down" "down"
代码语言:r
复制
df1[c(1,3),1:2]
代码语言:txt
复制
##    gene change
## 1 gene1     up
## 3 gene3   down
代码语言:r
复制
## 按名字
df1[,"gene"]
代码语言:txt
复制
## [1] "gene1" "gene2" "gene3" "gene4"
代码语言:r
复制
df1[,c('gene','change')]
代码语言:txt
复制
##    gene change
## 1 gene1     up
## 2 gene2     up
## 3 gene3   down
## 4 gene4   down
代码语言:r
复制
#5.数据框修改

#改一个格
df1[3,3] <- 5
df1
代码语言:txt
复制
##    gene change score
## 1 gene1     up     5
## 2 gene2     up     3
## 3 gene3   down     5
## 4 gene4   down    -4
代码语言:r
复制
#改一整列
df1$score <- c(12,23,50,2)     
df1
代码语言:txt
复制
##    gene change score
## 1 gene1     up    12
## 2 gene2     up    23
## 3 gene3   down    50
## 4 gene4   down     2
代码语言:r
复制
#?
df1$p.value <- c(0.01,0.02,0.07,0.05) 
df1
代码语言:txt
复制
##    gene change score p.value
## 1 gene1     up    12    0.01
## 2 gene2     up    23    0.02
## 3 gene3   down    50    0.07
## 4 gene4   down     2    0.05
代码语言:r
复制
#改行名和列名
rownames(df1) <- c("r1","r2","r3","r4")
#只修改某一行/列的名
colnames(df1)[2] <- "CHANGE"

#6.两个数据框的连接
test1 <- data.frame(name = c('jimmy','nicker','Damon','Sophie'), 
                    blood_type = c("A","B","O","AB"))
test1
代码语言:txt
复制
##     name blood_type
## 1  jimmy          A
## 2 nicker          B
## 3  Damon          O
## 4 Sophie         AB
代码语言:r
复制
test2 <- data.frame(name = c('Damon','jimmy','nicker','tony'),
                    group = c("group1","group1","group2","group2"),
                    vision = c(4.2,4.3,4.9,4.5))
test2
代码语言:txt
复制
##     name  group vision
## 1  Damon group1    4.2
## 2  jimmy group1    4.3
## 3 nicker group2    4.9
## 4   tony group2    4.5
代码语言:r
复制
test3 <- data.frame(NAME = c('Damon','jimmy','nicker','tony'),
                    weight = c(140,145,110,138))
test3
代码语言:txt
复制
##     NAME weight
## 1  Damon    140
## 2  jimmy    145
## 3 nicker    110
## 4   tony    138
代码语言:r
复制
merge(test1,test2,by="name")
代码语言:txt
复制
##     name blood_type  group vision
## 1  Damon          O group1    4.2
## 2  jimmy          A group1    4.3
## 3 nicker          B group2    4.9
代码语言:r
复制
merge(test1,test3,by.x = "name",by.y = "NAME")
代码语言:txt
复制
##     name blood_type weight
## 1  Damon          O    140
## 2  jimmy          A    145
## 3 nicker          B    110
代码语言:r
复制
#### 矩阵和列表
m <- matrix(1:9, nrow = 3)
colnames(m) <- c("a","b","c") #加列名
m
代码语言:txt
复制
##      a b c
## [1,] 1 4 7
## [2,] 2 5 8
## [3,] 3 6 9
代码语言:r
复制
m[2,]
代码语言:txt
复制
## a b c 
## 2 5 8
代码语言:r
复制
m[,1]
代码语言:txt
复制
## [1] 1 2 3
代码语言:r
复制
m[2,3]
代码语言:txt
复制
## c 
## 8
代码语言:r
复制
m[2:3,1:2]
代码语言:txt
复制
##      a b
## [1,] 2 5
## [2,] 3 6
代码语言:r
复制
m
代码语言:txt
复制
##      a b c
## [1,] 1 4 7
## [2,] 2 5 8
## [3,] 3 6 9
代码语言:r
复制
t(m)
代码语言:txt
复制
##   [,1] [,2] [,3]
## a    1    2    3
## b    4    5    6
## c    7    8    9
代码语言:r
复制
as.data.frame(m)
代码语言:txt
复制
##   a b c
## 1 1 4 7
## 2 2 5 8
## 3 3 6 9
代码语言:r
复制
#列表
x <- list(m1 = matrix(1:9, nrow = 3),
          m2 = matrix(2:9, nrow = 2))
x
代码语言:txt
复制
## $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
代码语言:r
复制
x[[1]]
代码语言:txt
复制
##      [,1] [,2] [,3]
## [1,]    1    4    7
## [2,]    2    5    8
## [3,]    3    6    9
代码语言:r
复制
x$m1
代码语言:txt
复制
##      [,1] [,2] [,3]
## [1,]    1    4    7
## [2,]    2    5    8
## [3,]    3    6    9
代码语言:r
复制
# 补充:元素的名字

scores = c(100,59,73,95,45)
names(scores) = c("jimmy","nicker","Damon","Sophie","tony")
scores
代码语言:txt
复制
##  jimmy nicker  Damon Sophie   tony 
##    100     59     73     95     45
代码语言:r
复制
scores["jimmy"]
代码语言:txt
复制
## jimmy 
##   100
代码语言:r
复制
scores[c("jimmy","nicker")]
代码语言:txt
复制
##  jimmy nicker 
##    100     59
代码语言:r
复制
names(scores)[scores>60]
代码语言:txt
复制
## [1] "jimmy"  "Damon"  "Sophie"
代码语言:r
复制
### 后置的难点
## 按条件(逻辑值)
df1 <- data.frame(gene   = paste0("gene",1:4),
                  change  = rep(c("up","down"),each = 2),
                  score   = c(5,3,-2,-4))
k = df1$score>0;k
代码语言:txt
复制
## [1]  TRUE  TRUE FALSE FALSE
代码语言:r
复制
df1[k,]
代码语言:txt
复制
##    gene change score
## 1 gene1     up     5
## 2 gene2     up     3
代码语言:r
复制
#筛选score > 0的基因
df1[k,1]
代码语言:txt
复制
## [1] "gene1" "gene2"
代码语言:r
复制
df1$gene[k]
代码语言:txt
复制
## [1] "gene1" "gene2"
代码语言:r
复制
df1$gene[df1$score>0]
代码语言:txt
复制
## [1] "gene1" "gene2"
代码语言:r
复制
# 删除 
rm(x)
rm(df1,df2)
rm(list = ls()) 

2.2 知识点

数据框按照逻辑值筛选子集
筛选Score>0的基因

3 直播课Day04 R包、文件读写

3.1 R包

代码语言:txt
复制
# R包镜像
# R包安装前先设置镜像,境外如果装包速度快就不需要设置

# 清华镜像
# http://mirrors.tuna.tsinghua.edu.cn/CRAN/
# http://mirrors.tuna.tsinghua.edu.cn/bioconductor/

# 中科大镜像
# http://mirrors.ustc.edu.cn/CRAN/
# http://mirrors.ustc.edu.cn/bioc/

options("repos"=c(CRAN="http://mirrors.tuna.tsinghua.edu.cn/CRAN/"))
options(BioC_mirror="http://mirrors.tuna.tsinghua.edu.cn/bioconductor/")
# 备用:西湖大学
options(BioC_mirror="https://mirrors.westlake.edu.cn/bioconductor")

R包安装

推荐操作

总结

列出一个包里有哪些函数或数据

一个问题

3.2 文件读写

经典问题

用于导入\导出文件的包

data.table的读写操作

rio的读写操作(推荐读取excel文件采取这种方式)

总结

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 技能树Day02
    • 1 直播课Day02 数据结构—向量
      • 1.1 课堂代码
      • 1.2 练习题
      • 1.3 知识点
    • 2 直播课Day03 数据结构—数据框、矩阵、列表
      • 2.1 课堂代码
      • 2.2 知识点
    • 3 直播课Day04 R包、文件读写
      • 3.1 R包
      • 3.2 文件读写
相关产品与服务
云直播
云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档