ciao a tutti! e' la prima volta che scrivo su questo blog. Ho un problema con R che ho appena iniziato a usare.
Devo creare una funzione che mi faccia una normalizzazzione quantile di dati di intansita' di una serie di micro array e devo utilizzarla in un programma main che mi permetta di graficare la situazione pre e post normalizzazione.
Inizialmente ho creato il programma main con la funzione integrata al suo interno e tutto va bene:
###########
#versione con la funzione integrata nel main e che funziona
########################
#parte main dell'esercizio
aus<-as.matrix(read.table("logratio_data.txt",header=TRUE))
Spot.index<-aus[,1]#la prima colonna contiene gli identificativi degli spot
LR.data<-aus[,-1]
#1)fare un grafico con i boxplot di ogni array
X11()
boxplot(as.data.frame(LR.data),ylim=c(-6,6))
title("Boxplot di tutti gli array")
X11()
#2)calcolare la media per righe di ogni array
medie_per_riga<-apply(LR.data,1,mean)
#3)fare il qq plot di ogni array rispetto a vettore delle medie
num_array<-c(ncol(LR.data))
par(mfrow=c(num_array/2,num_array/4))
for (i in (1:8))
{
qqplot(medie_per_riga,LR.data[,i],xlim=c(-6,6),ylim=c(-6,6))
title(paste("array",i,"vs media"))
abline(0,1,col=2)
}
#4)quantile normalization
#provo a farla senza chiamare la funzione
matrice.ordinata<-apply(LR.data,2,sort)
#2)creo una nuova matrice che memorizzi l'ordinamento
matrice.posizioni<-apply(LR.data,2,rank)
#3)costruisco vettore contenente media riga per riga
medie.riga<-apply(LR.data,1,mean)
#4)
#4a)inizializzo la matrice normalizzata
numero_righe<-nrow(LR.data)
numero_colonne<-ncol(LR.data)
matr.norm<-matrix(0,nrow=numero_righe,ncol=numero_colonne)
#4b)
for (i in (1:numero_colonne))
{matr.norm[,i]<-medie.riga[matrice.posizioni[,i]]
}
###############################################################
#normalizzo e faccio grafico boxplot
X11()
boxplot(as.data.frame(matr.norm),ylim=c(-6,6))
title("Boxplot di tutti gli array normalizzati")
#3)fare il qq plot di ogni array normalizzato rispetto al primo array normalizzato
X11()
par(mfrow=c(num_array/2,num_array/4))
for (i in (1:8))
{
qqplot(matr.norm[,1],matr.norm[,i],xlim=c(-6,6),ylim=c(-6,6))
title(paste("array",i,"vs array 1 (versione normalizzata)"))
abline(0,1,col=2)
}
il problema e' quando chiamo la funzione che invece ho creato:
la funzione e':
##################################################
norm_quantile<-function(log_ratio)
#1)creo una nuova matrice con gli elementi della prima ordinati epr colonne
matrice.ordinata<-apply(log_ratio,2,sort)
#2)creo una nuova matrice che memorizzi l'ordinamento
matrice.posizioni<-apply(log_ratio,2,rank)
#3)costruisco vettore contenente media riga per riga
medie.riga<-apply(log_ratio,1,mean)
#4)
#4a)inizializzo la matrice normalizzata
numero_righe<-nrow(log_ratio)
numero_colonne<-ncol(log_ratio)
matr.norm<-matrix(0,nrow=numero_righe,ncol=numero_colonne)
#4b)
for (i in (1:numero_colonne))
{matr.norm[,i]<-medie.riga[matrice.posizioni[,i]]
}
return(matr.norm)
########
quando la carico nel workspace mi da:
source("norm_quant.R")
Errore in apply(log_ratio, 2, rank) : oggetto "log_ratio" non trovato
Scusate il disturbo e grazie in anticipo!!!!!!!
nota del moderatore: ho splittato la discussione e cambiato il titolo. Per favore non mischiamo troppe domande nello stesso topic, si crea confusione!