hello, I need help because I don't understand the syntaxe "else" how can I write it for example I writed a script to cut missings values and I have errors> if(na==length(C)){+ pos=match(0,match(donGeno[[na-1]],donGeno[[na]],nomatch=0)) + for(k in 1:(na-1)) { + if(pos==1) {donGeno[[k]] <- donGeno[[k]][2:C[k]]} + if(pos==C[k]){donGeno[[k]] <- donGeno[[k]][1:(C[k]-1)]} + else{donGeno[[k]] <- c(donGeno[[k]][1:(pos-1)],donGeno[[k]][(pos+1):C(k)])} + } + }> if(na==1){+ pos=match(0,match(donGeno[[na+1]],donGeno[[na]],nomatch=0)) + for(k in 2:length(C)){ + if(pos==1) {donGeno[[k]] <- donGeno[[k]][2:C[k]]} + if(pos==C[k]){donGeno[[k]] <- donGeno[[k]][1:(C[k]-1)]} + else{donGeno[[k]] <- c(donGeno[[k]][1:(pos-1)],donGeno[[k]][(pos+1):C(k)])} + } + }> else{for(k in 1:(na-1)){Erreur : erreur de syntaxe dans "else"> if(pos==1) {donGeno[[k]] <- donGeno[[k]][2:C[k]]} > if(pos==C[k]){donGeno[[k]] <- donGeno[[k]][1:(C[k]-1)]} > else{donGeno[[k]] <- c(donGeno[[k]][1:(pos-1)],donGeno[[k]][(pos+1):C(k)])}Erreur : erreur de syntaxe dans " else"> }Erreur : erreur de syntaxe dans " }"> for(k in 1:(na-1)){+ if(pos==1) {donGeno[[k]] <- donGeno[[k]][2:C[k]]} + if(pos==C[k]){donGeno[[k]] <- donGeno[[k]][1:(C[k]-1)]} + else{donGeno[[k]] <- c(donGeno[[k]][1:(pos-1)],donGeno[[k]][(pos+1):C(k)])} + } Erreur dans C(k) : objet non interprétable comme un facteur> }Erreur : erreur de syntaxe dans " }" Have you got some ideas? ___________________________________________________________________________ [[alternative HTML version deleted]]
On 02/05/2007 8:11 AM, elyakhlifi mustapha wrote:> hello, > I need help because I don't understand the syntaxe "else" how can I write it for example I writed a script to cut missings values and I have errors > >> if(na==length(C)){ > + pos=match(0,match(donGeno[[na-1]],donGeno[[na]],nomatch=0)) > + for(k in 1:(na-1)) { > + if(pos==1) {donGeno[[k]] <- donGeno[[k]][2:C[k]]} > + if(pos==C[k]){donGeno[[k]] <- donGeno[[k]][1:(C[k]-1)]} > + else{donGeno[[k]] <- c(donGeno[[k]][1:(pos-1)],donGeno[[k]][(pos+1):C(k)])} > + } > + } >> if(na==1){ > + pos=match(0,match(donGeno[[na+1]],donGeno[[na]],nomatch=0)) > + for(k in 2:length(C)){ > + if(pos==1) {donGeno[[k]] <- donGeno[[k]][2:C[k]]} > + if(pos==C[k]){donGeno[[k]] <- donGeno[[k]][1:(C[k]-1)]} > + else{donGeno[[k]] <- c(donGeno[[k]][1:(pos-1)],donGeno[[k]][(pos+1):C(k)])} > + } > + } >> else{for(k in 1:(na-1)){ > Erreur : erreur de syntaxe dans "else"R will parse a complete statement if you enter one. Your if() was complete before the else was entered, so the else got orphaned. The usual convention to avoid this is to put the else on the same line as the brace that closes the if, e.g. if(na==1){ ... } else { ... } Duncan Murdoch>> if(pos==1) {donGeno[[k]] <- donGeno[[k]][2:C[k]]} >> if(pos==C[k]){donGeno[[k]] <- donGeno[[k]][1:(C[k]-1)]} >> else{donGeno[[k]] <- c(donGeno[[k]][1:(pos-1)],donGeno[[k]][(pos+1):C(k)])} > Erreur : erreur de syntaxe dans " else" >> } > Erreur : erreur de syntaxe dans " }" >> for(k in 1:(na-1)){ > + if(pos==1) {donGeno[[k]] <- donGeno[[k]][2:C[k]]} > + if(pos==C[k]){donGeno[[k]] <- donGeno[[k]][1:(C[k]-1)]} > + else{donGeno[[k]] <- c(donGeno[[k]][1:(pos-1)],donGeno[[k]][(pos+1):C(k)])} > + } > Erreur dans C(k) : objet non interpr?table comme un facteur >> } > Erreur : erreur de syntaxe dans " }" > > > Have you got some ideas? > > > > ___________________________________________________________________________ > > > > > > [[alternative HTML version deleted]] > > > > ------------------------------------------------------------------------ > > ______________________________________________ > R-help at stat.math.ethz.ch mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code.
Hi r-help-bounces at stat.math.ethz.ch napsal dne 02.05.2007 14:11:51:> hello, > I need help because I don't understand the syntaxe "else" how can Iwrite it> for example I writed a script to cut missings values and I have errors > > > if(na==length(C)){ > + pos=match(0,match(donGeno[[na-1]],donGeno[[na]],nomatch=0)) > + for(k in 1:(na-1)) { > + if(pos==1) {donGeno[[k]]<-> donGeno[[k]][2:C[k]]} > + if(pos==C[k]){donGeno[[k]] <- donGeno[[k]][1:(C[k]-1)]} > + else{donGeno[[k]] <-c(donGeno[[k]][1:(pos-1)],donGeno[[k]][(pos+1):C(k)])}> + } > + } > > if(na==1){ > + pos=match(0,match(donGeno[[na+1]],donGeno[[na]],nomatch=0)) > + for(k in 2:length(C)){ > + if(pos==1) {donGeno[[k]] <- donGeno[[k]][2:C[k]]} > + if(pos==C[k]){donGeno[[k]] <- donGeno[[k]][1:(C[k]-1)]} > + else{donGeno[[k]] <-c(donGeno[[k]][1:(pos-1)],donGeno[[k]][(pos+1):C(k)])}> + } > + } > > else{for(k in 1:(na-1)){ > Erreur : erreur de syntaxe dans "else" > > if(pos==1) {donGeno[[k]] <- donGeno[[k]][2:C[k]]} > > if(pos==C[k]){donGeno[[k]] <- donGeno[[k]][1:(C[k]-1)]} > > else{donGeno[[k]] <-c(donGeno[[k]][1:(pos-1)],donGeno[[k]][(pos+1):C(k)])}> Erreur : erreur de syntaxe dans " else" > > } > Erreur : erreur de syntaxe dans " }" > > for(k in 1:(na-1)){ > + if(pos==1) {donGeno[[k]] <- donGeno[[k]][2:C[k]]} > + if(pos==C[k]){donGeno[[k]] <- donGeno[[k]][1:(C[k]-1)]} > + else{donGeno[[k]] <-c(donGeno[[k]][1:(pos-1)],donGeno[[k]][(pos+1):C(k)])}> + } > Erreur dans C(k) : objet non interpr?table comme un facteur > > } > Erreur : erreur de syntaxe dans " }" > > > Have you got some ideas? >What about to try to provide some reproducible example as suggested in posting guide. I believe your messy code can be evaluated in much more neat and concise way without so many ifs and fors. Maybe you can uncover some by yourself what trying to write a simple reproducible example. I am reluctant to decipher what you want to achieve but maybe you want retain only common values of several sets. So e.g. from match help page ## The intersection of two sets : intersect <- function(x, y) y[match(x, y, nomatch = 0)]> x<-sample(1:100, 50) > y<-1:50 > x2<-sample(1:100,50)> intersect(x,x2)[1] 39 87 66 7 64 79 62 98 6 95 96 35 74 36 3 50 58 97 52 33 61 88 47 17 32 11 76 25> intersect(y,intersect(x,x2))[1] 3 6 7 11 17 25 32 33 35 36 39 47 50 Regarding the error message> if (1==1) print(25) else print(30)[1] 25> if (1==2) print(25) else print(30)[1] 30> if (1==1) print(25)[1] 25> else print(30)Error: syntax error, unexpected ELSE in "else">>From help pageIn particular, you ***should not have a newline between } and else to avoid a syntax error*** in entering a if ... else construct at the keyboard or via source. For that reason, one (somewhat extreme) attitude of defensive programming is to always use braces, e.g., for if clauses Regards Petr> > >___________________________________________________________________________> > > > > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at stat.math.ethz.ch mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guidehttp://www.R-project.org/posting-guide.html> and provide commented, minimal, self-contained, reproducible code.