问题
今天给生信入门班和数据挖掘班的往期学员提供直播答疑遇到了一个好问题,给大家分享下。
学员使用的是小鼠的数据
想要使用曾老师提供的marker基因,但那些基因是人的。
人和小鼠基因名字粗略对应,就是人基因名都是大写,而小鼠是首字母大写!
因此我们就需要把每个基因名字变成首字母大写咯!
cell_type_markers<-list(
Cardiomyocytes=c("ACTC1","MYL7","TNNT2"),
Fibroblasts=c("DCN","GSN","COL1A2"),
EndothelialCells=c("VWF","CD36"),
Pericytes=c("RGS5","ABCC9"),
SmoothMuscleCells=c("ACTA2","MYH11","MYLK"),
Macrophages=c("CD163","C1QA"),
Lymphocytes=c("NKG7","CCL5","IL7R"),
Monocytes=c("S100A8"),
BCells=c("CD69","CD79A"),
MesothelialCells=c("MSLN")
)
cell_type_markers
## $Cardiomyocytes
## [1] "ACTC1" "MYL7" "TNNT2"
##
## $Fibroblasts
## [1] "DCN" "GSN" "COL1A2"
##
## $EndothelialCells
## [1] "VWF" "CD36"
##
## $Pericytes
## [1] "RGS5" "ABCC9"
##
## $SmoothMuscleCells
## [1] "ACTA2" "MYH11" "MYLK"
##
## $Macrophages
## [1] "CD163" "C1QA"
##
## $Lymphocytes
## [1] "NKG7" "CCL5" "IL7R"
##
## $Monocytes
## [1] "S100A8"
##
## $BCells
## [1] "CD69" "CD79A"
##
## $MesothelialCells
## [1] "MSLN"
所以如果强行使用,当然是一个基因都找不到咯!后面就会进行不下去
那咋整呢。我们可以用R语言技巧把基因名改为首字母大写。
一句搞定:
library(stringr)
cell_type_markers = lapply(cell_type_markers, str_to_title)
cell_type_markers
## $Cardiomyocytes
## [1] "Actc1" "Myl7" "Tnnt2"
##
## $Fibroblasts
## [1] "Dcn" "Gsn" "Col1a2"
##
## $EndothelialCells
## [1] "Vwf" "Cd36"
##
## $Pericytes
## [1] "Rgs5" "Abcc9"
##
## $SmoothMuscleCells
## [1] "Acta2" "Myh11" "Mylk"
##
## $Macrophages
## [1] "Cd163" "C1qa"
##
## $Lymphocytes
## [1] "Nkg7" "Ccl5" "Il7r"
##
## $Monocytes
## [1] "S100a8"
##
## $BCells
## [1] "Cd69" "Cd79a"
##
## $MesothelialCells
## [1] "Msln"
这里面用到了两个函数:
str_to_title :将字符串转换为标题格式,基因名只有一个词,所以就是首字母大写。
lapply :用于将函数应用于列表(list)或向量(vector)的每个元素,并返回一个列表。lapply 的用法如下:
lapply(X, FUN, ...)
其中:
X 是要应用函数的对象,可以是列表或向量。
FUN 是要应用的函数。
... 是传递给函数 FUN 的其他参数(可选)。
所以这句代码就是将str_to_title应用于cell_type_markers的每一个元素,也就是基因名称组成的向量。返回结果仍然是列表,且保留了原有的元素名称(即细胞名字)。
AI不能解决所有问题,还是得自己会个大概~
基础不牢,地动山摇啊~