R variable numérique non nulle, non na, mais vide

Hi eveyrone ##.

J'ai eu quelques problème avec les R que je ne peux pas corriger: Actuellement je travaille avec GEOquery paquet et je veux récupérer des informations dans les métadonnées de la gse fichiers.

Plus précisément, je suis à la recherche pour le nom de canal (par exemple Cye3). Voici un exemple de mon code :

>library(GEOquery)
>gse<-getGEO("GSE2253",GSEMatrix=TRUE,destdir=".")
>gse<-gse[[1]]
>gse$label_ch1[1]
 V2 

Levels:  According to Affymetrix protocol (biotin)`

Et voici mon problème

`> is.na(gse$label_ch1[1])
  V2 
 FALSE 
> is.null(gse$label_ch1[1])
[1] FALSE`

Cette GSE fichier est un fichier texte et dans la ligne correspondant à l'étiquette (!Sample_label_ch1) il n'y a pas de valeur.Donc, voici ce que je v faire de mon travail:

`if(is.na(gse$label_ch1[1])){
color<-"Non specified"
} else {
label<-gse$label_ch1[1]
}`

Donc, si je n'ai pas d'informations pour le canal je viens de dire "non spécifié", sinon, je reviens de la valeur. Mais j'ai réussit a reçu l'erreur avec ce if/else dans mon script:

Error in if (file == "") file <- stdout() else if (is.character(file)) { :
the length of argument is null

Désolé si l'erreur de traduction n'est pas exacte, mon R version est en français ^^.

J'ai essayé

if(as.character(gse$label_ch1[1])=="")

Mais il ne fonctionne pas, soit

Si quelqu'un a une idée pour m'aider ^^

Merci d'avance!

Script:

sample<-NULL
output<-NULL
gse<-NULL
color<-NULL
series_matrix<-dir(getwd(),pattern="*series_matrix.txt")
series_matrix<-unlist(strsplit(series_matrix,"_")[1])
for(i in 1:length(series_matrix)){
gse<-getGEO(series_matrix[i],GSEMatrix=TRUE,destdir=".")
gse<-gse[[1]]
if(length(gse$label_ch1[1])==0){
color<-"Non specified"
} else {
color<-gse$label_ch1[1]
}
print (color)
sample<-cbind(as.character(gse$title),as.character(gse$geo_accession))
outputsample<-paste(getwd(),"/sample.txt",sep="")
write.table(paste("txt",color,sep=""),output,
row.names=FALSE,col.names=FALSE,sep="\t",quote=FALSE)
write.table(sample,outputsample,
row.names=FALSE,col.names=FALSE,sep="\t",quote=FALSE,append=TRUE)
Feature_Num<-list(1:length(featureNames(gse)))
Gene_Symbol<-pData(featureData(gse)[,11])
Probe_Name<-pData(featureData(gse)[,1])
Control_Type<-pData(featureData(gse)[,3])
liste<-as.character(sampleNames(gse))
for(i in 1:lenght(liste)){
values<-cbind(Feature_Num,Gene_Symbol,Probe_name,Control_Type,exprs(gse)[,i])
colnames(values)<-c("Feature_Num","Gene_Symbol",
"Probe_Name","Control_Type","gMedianSignal")
write.table(values,paste(getwd(),"/Ech",liste[i],".txt",sep=""),
row.names=FALSE,quote=FALSE,sep="\t")
}
}

N'hésitez pas si vous voulez l'explication sur les lignes de ce script

  • si c'était un facteur de l'est.na aurait travaillé, pouvez-vous donner la classe et le genre?
  • oooh la longueur de l'argument est null... vous pouvez essayer if(length(gse$label_ch1[1])==0) si cela ne fonctionne pas, vous pouvez toujours essayer d'obtenir la variable à double [ comme gse$label_ch1[[1]]
  • Merci beaucoup pour votre réponse. il fonctionne très bien ^^ Mais malheureusement j'ai toujours cette erreur de fichier. Je suis en commençant par R, donc je suis pas vraiment à l'aise. Depuis j'ai toujours cette erreur peut-être que ça ne vient pas de mon cas? Je vous laisse le script (éditer le premier message), j'ai écrit peut-être que vous pourriez détecter ce qui ne va pas
  • Juste pour précision: il fonctionne depuis le s'est passé ^^ mais il reste encore le problème de mon "vide" variable
InformationsquelleAutor Maryvonne | 2014-07-11