Entering edit mode
Arman Shahrisa
▴
20
@arman-shahrisa-7713
Last seen 6.0 years ago
How can I create an automated cbind()
to use with for loop?
This is the part that returns error
expression <- cbind(expression, rrM.ProfileData)
The following is my function
genes is a character vector containing names of the desired genes.
cancer is also a character vector string containing names of desired cancers.
csvname will be used as name of exported csv file containing desired expression profile.
makeHeatmapForAllCancers <- function(genes, cancers, csvname, method="mean", zscore.cutoff=2) { print("Make sure the VPN is connected, otherwise the function wont be able to get the required data from http://www.cbioportal.org/") ## Type of computing function if (method=="mean"){ cfunc <- function(x) mean(x, na.rm=TRUE) } else if (method=="median") { cfunc <- function(x) median(x, na.rm=TRUE) } else { print("method can not be left empety, it should be defined as mean or median") } ## Getting the required gene expresssion profile print("Downloading the required gene expresssion profile from http://www.cbioportal.org/") library("cgdsr") mycgds = CGDS("http://www.cbioportal.org/") colname <- vector("character", length(cancers)) colname[1] <- "Gene.names" samplesize <- vector("numeric", length(cancers)) cancernames <- vector("character", length(cancers)) cancers <- (cancers[cancers!="Metastatic Prostate Cancer, SU2C/PCF Dream Team (Robinson et al., Cell 2015)"]) Metastatic.Prostate.Cancer.mycancerstudy = getCancerStudies(mycgds)[ which(getCancerStudies(mycgds)[,2]=="Metastatic Prostate Cancer, SU2C/PCF Dream Team (Robinson et al., Cell 2015)"),1] Metastatic.Prostate.Cancer.mycaselist = getCaseLists(mycgds,Metastatic.Prostate.Cancer.mycancerstudy)[6,1] Metastatic.Prostate.Cancer.mygeneticprofile = getGeneticProfiles(mycgds,Metastatic.Prostate.Cancer.mycancerstudy)[2,1] Metastatic.Prostate.Cancer.ProfileData <- t(getProfileData(mycgds,genes,Metastatic.Prostate.Cancer.mygeneticprofile,Metastatic.Prostate.Cancer.mycaselist)) Expression <- vector("numeric", length=length(genes)) for(i in 1:length(genes)){ Expression[i] <- cfunc(as.vector(Metastatic.Prostate.Cancer.ProfileData[i,])[Metastatic.Prostate.Cancer.ProfileData[i,] > zscore.cutoff]) } dim(Expression) <- c(length(genes),1) ## expressionProfile <<- data.frame(expressionProfile, Metastatic.Prostate.Cancer=Expression) colname[1] <- "Metastatic.Prostate.Cancer" cancernames[1] <- "Metastatic.Prostate.Cancer" samplesize[1] <- ncol(Metastatic.Prostate.Cancer.ProfileData) ## TCGA for(k in 1:length(cancers)){ mycancerstudy = getCancerStudies(mycgds)[which(getCancerStudies(mycgds)[,2]==as.character(cancers[k])),1] mycaselist = getCaseLists(mycgds,mycancerstudy)[which(getCaseLists(mycgds,mycancerstudy)[,2]=="Tumor Samples with mRNA data (RNA Seq V2)"),1] mygeneticprofile = getGeneticProfiles(mycgds,mycancerstudy)[which(getGeneticProfiles(mycgds,mycancerstudy)[,2]=="mRNA Expression z-Scores (RNA Seq V2 RSEM)"),1] ProfileData <- t(getProfileData(mycgds,genes,mygeneticprofile,mycaselist)) samplesize[k+2] <- ncol(ProfileData) rrM.ProfileData <- vector("numeric", length=length(genes)) for(j in 1:length(genes)){ rrM.ProfileData[j] <- cfunc(as.vector(ProfileData[j,])[ProfileData[j,] > zscore.cutoff]) } dim(rrM.ProfileData) <- c(length(genes),1) expression <- cbind(expression, rrM.ProfileData) cname <- sapply(strsplit(as.character(cancers[k]), split=" (", fixed=TRUE), function(x) (x[1])) colname[k+2] <- as.character(cname) cancernames[k+2] <- as.character(cname) } ## Creating expressionSet class print("Creating expressionSet class for obtained data") library(Biobase) dimnames(expression) <- list(genes, colname) expressionpData <- data.frame(Sample.size=samplesize, stringsAsFactors = FALSE) colnames(expressionpData) <- colname expressionpData <- AnnotatedDataFrame(expressionpData) expression.Set <<- ExpressionSet(expression, expressionpData) ## Plotting Heatmap print("Prepairing Heatmap") library(gplots) library(RColorBrewer) library(rafalib) tissue= pData(expression.Set)$tissue hmcol <- rev(colorRampPalette(brewer.pal(9, "RdBu"))(100)) print(heatmap.2(exprs(expression.Set), labCol=tissue, trace="none", symbreaks = T, col=hmcol, cexRow =0.7, cexCol= 0.8, margins= c(17,15))) ## Save the expression profile genes.list <- t(exprs(expression.Set)) write.table(genes.list, file=csvname) cat("A .csv file entitled", csvname, "which contains expression profile for requested genes in all cancers was saved in", get.seq(), "directory", sep=" ") print("The function was programmed by Arman Shahrisa") }
What is the error message you are receiving?
I fixed the problem. It was a "E" instead of "e". I appreciate for your time.
This question has nothing to do with Bioconductor and is of no interest to the Bioconductor community. Can someone simply delete it?