2021.9.16
题目:
已有信息ensembl_id,找到对应的基因名(symbol)
思路:
通过ensembl_id确定gene_id,再通过gene_id确定symbol。
技术点:
1)用separate去掉版本号使数据A与ensembl_id一样。
2)使用merge()函数去合并数据框。
答案:
A<-read.table("C:/Users/Alice/Documents/Practice/A-gene.txt",header=F)
library(tidyr)
A2<-separate(A,V1,into="ensembl_id",sep="[.]")
library(org.Hs.eg.db)
g2s=toTable(org.Hs.egSYMBOL)
g2e=toTable(org.Hs.egENSEMBL)
C<-merge(g2e,A2,by="ensembl_id")
D<-merge(g2s,C,by="gene_id")
D

ListD.png
2021.9.17
题目1:
怎么把a="A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q"变成
b="A1B2C3D4E5F6G7H8I9J10K11L12M13N14015P16Q17"
提示:
可以用strsplit、paste0这两个函数
答案:
x1<-c(as.character(1:17))
a<-c("A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q")
x2<-unlist(strsplit(as.character(a),split = "-"))
b<-paste(x2,x1,sep="")
b
#[1] "A1" "B2" "C3" "D4" "E5" "F6" "G7" "H8" "I9" "J10" "K11"
[12] "L12" "M13" "N14" "O15" "P16" "Q17"
题目2:
上题不用unlist怎么操作?
目的:
理解R里的列表。
思路:
用[[1]](在list中取值)替代unlist的作用,“[[1]]”是list取值的固定表达方法。
答案:
x1<-c(as.character(1:17))
a<-c("A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q")
x2<-strsplit(as.character(a),split = "-")
x3<-x2[[1]]
b<-paste(x3,x1,sep="")
b
#[1] "A1" "B2" "C3" "D4" "E5" "F6" "G7" "H8" "I9" "J10" "K11"
[12] "L12" "M13" "N14" "O15" "P16" "Q17"
拓展:
试运行以下代码,练习在list里取值
d<-lapply(1:4,function(x){x*x+2})
d1<-d[[2]]
d1
#[1] 6
2021.9.18
题目:
熟悉下循环,学apply、lapply,然后学for循环,并用for循环编程求1+2+3+…+100的值。
思路:
R语言for循环的结构体:
for ( 迭代因子 in 迭代区间 ) {
循环体
}

循环示意图.png
答案:
# for循环1到100的连加
he<-0 # 对结果赋初值
for(i in 1:100){
he<-he+i # 将每次的值累加
}
he
#[1] 5050
拓展:
# for循环1到10的平方之和
## 初始化数值
fac<-1
ans<-0
## 循环求值
for (i in 1:10) {
fac<-i*i # 平方计算
ans<-ans + fac # 累加求和
}
ans
#[1] 385
# for循环1到10的阶乘之和
## 初始化数值
fac<-1
ans<-0
## 循环求值
for (i in 1:10) {
fac<-fac*i # 阶乘计算
ans<-ans + fac # 累加求和
}
ans
#[1] 4037913