R包genfu比较风险预测模型(一)

研究需要,不得不断的学习新的软件包,R的突出特点即在于开源,和众多的软件包,其学习的难点也在于需要包太多,每用新的包都需要学习,了解软件的使用参数。该文记录genefu包的学使用,我自己构建的模型已经有了一定的结果,最后希望与现有的多基因芯片模型比较,其实我也不知道自己基于测序的模型能否与现有的芯片模型比较,我也完全可以到现在就整理数据,告一段落,然后继续学习其它的套路。只是因为我想深入一些,真正的做一些有意义的工作,也许可以在时间的长河里留下痕迹,提醒自己时间的力量。

####genefu包的使用
##修改镜像
options(BioC_mirror="https://mirrors.ustc.edu.cn/bioc/")  

if(FALSE){BiocManager::install("genefu")
}
##
library(genefu)
library(xtable)
library(rmeta)
library(Biobase)
library(caret)


##
if(FALSE){BiocManager::install("breastCancerMAINZ")
BiocManager::install("breastCancerTRANSBIG")
BiocManager::install("breastCancerUPP")
BiocManager::install("breastCancerUNT")
BiocManager::install("breastCancerNKI")
}
##加载各数据集
library(breastCancerMAINZ)
library(breastCancerTRANSBIG)
library(breastCancerUPP)
library(breastCancerUNT)
library(breastCancerNKI)

##case1比较风险预测模型
##5个芯片数据集已整合为R包
##
data(breastCancerData)

##查看数据结构
str(nki7g)
dim(nki7g)
cinfo <- colnames(pData(mainz7g))

##整合数据到向量
data.all <- c("transbig7g"=transbig7g, "unt7g"=unt7g, "upp7g"=upp7g,
              "mainz7g"=mainz7g, "nki7g"=nki7g)

##mainz与NKI数据集无重复
idtoremove.all <- NULL
duplres <- NULL

##关注transbig7g数据集, unt7g upp7g
dim(pData(transbig7g))
dim(pData(unt7g))
dim(pData(upp7g))
##可观察到都为21列的临床信息,sample数不同
##rbind整合三个临床信息,
demo.all <- rbind(pData(transbig7g), pData(unt7g), pData(upp7g))
dn2 <- c("TRANSBIG", "UNT", "UPP")

## 检索VDXKIU, KIU, UPPU 三个series
ds2 <- c("VDXKIU", "KIU", "UPPU")
##is.element(A,B) A中元素属于B返回TRUE or FALSE
##有完整series信息并且留下想要的
demot <- demo.all[complete.cases(demo.all[ , c("series")]) & is.element(demo.all[ , "series"], ds2), ]
dim(demot)#可见筛选留下了290个sample

## 找到 series中相同的病人
##因demot中包含21列信息
colnames(demot)
# 找到 series id中重复的id
duplid <- sort(unique(demot[duplicated(demot[ , "id"]), "id"]))
duplrest <- NULL
##for循环中提取出游完整id dataset,且满足要求
for(i in 1:length(duplid)) {
  tt <- NULL
  for(k in 1:length(dn2)) {
    myx <- sort(row.names(demot)[complete.cases(demot[ , c("id", "dataset")]) &
                                   demot[ , "id"] == duplid[i] & demot[ , "dataset"] == dn2[k]])
    if(length(myx) > 0) { tt <- c(tt, myx) }
  }
  duplrest <- c(duplrest, list(tt))
}
##只要属于我们关注的3个数据集
names(duplrest) <- duplid
duplres <- c(duplres, duplrest)

## 检索 VVDXOXFU, OXFU series
ds2 <- c("VDXOXFU", "OXFU")
demot <- demo.all[complete.cases(demo.all[ , c("series")]) & is.element(demo.all[ , "series"], ds2), ]
# Find the duplicated patients in that series
duplid <- sort(unique(demot[duplicated(demot[ , "id"]), "id"]))
duplrest <- NULL
for(i in 1:length(duplid)) {
  tt <- NULL
  for(k in 1:length(dn2)) {
    myx <- sort(row.names(demot)[complete.cases(demot[ , c("id", "dataset")]) &
                                   demot[ , "id"] == duplid[i] & demot[ , "dataset"] == dn2[k]])
    if(length(myx) > 0) { tt <- c(tt, myx) }
  }
  duplrest <- c(duplrest, list(tt))
}
names(duplrest) <- duplid
duplres <- c(duplres, duplrest)

#### 得到完整的重复patients
##代码较复杂拆解查看下
a<-lapply(duplres, function(x) { return(x[-1]) })##对列表每个元素操作
unlist(a)##解开列表
duPL <- sort(unlist(lapply(duplres, function(x) { return(x[-1]) } )))
str(duPL)#duPL属于character
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,101评论 2 89
  • Docker是一个开源的容器运行和管理引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者...
    丁明威阅读 2,410评论 2 6
  • 在这个物欲横流、纷乱嘈杂的社会中,人们越来越不能忍受孤独、寂寞、一个人,又活回了“群居生物”。尤其是身边的人都成...
    长颈鹿不吃糖阅读 151评论 0 0
  • 夜梦思人去,不见柳春绿。 春雪覆大地,泪湿满衫白。 辗转难眠夜,春寒被未暖。 千里邮相思,提笔寒梅放。
    扶巧阅读 353评论 3 9
  • 敬告: 这篇文章关于广岛原子弹爆炸的有些描写和图片,可能会引起心里不适,请慎重阅读。 在广岛,没有像平时一样住单人...
    80天旅行阅读 540评论 0 0