Entering edit mode
Arman Shahrisa
▴
20
@arman-shahrisa-7713
Last seen 7.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?