Re: [R] vectorising ifelse()
Does either 'zippo' or 'zappo' contain the values 1 or 2 ? If so, then you cannot vectorize this code because you are changing the values in 'new' at every iteration and potentially sampling a value from new[ ,1] or new[ ,2] . If not, then it might be possible to vectorize. Something along the following untested lines pos - which( srow 0 ) neg - which( srow = 0 ) new[pos ,1] - new[ cbind(srow[pos] , zippo[pos]) ] new[neg, 1] - sample( 1:100, length(neg), prob=Y1, replace=TRUE ) and then repeat for filling in new[ ,2]. Am I correct in guessing that your srow and zippo are of the equal length here and thus new is a square matrix. Regards, Adai On Fri, 2005-07-22 at 00:44 +0100, Federico Calboli wrote: Hi All, is there any chance of vectorising the two ifelse() statements in the following code: for(i in gp){ new[i,1] = ifelse(srow[i]0, new[srow[i],zippo[i]], sample(1:100, 1, prob =Y1, rep = T)) new[i,2] = ifelse(drow[i]0, new[drow[i]0,zappo[i]], sample(1:100, 1, prob =Y1, rep = T)) } Where I am forced to check if the value of drow and srow are 0 for each line... in practical terms, I am attributing haplotypes to a pedigree, so I have to give the haplotypes to the parents before I give them to the offspring. The vectors *zippo* and *zappo* are the chances of getting one or the other hap from the sire and dam respectively. *gp* is the vectors of non-ancestral animals. *new* is a two col matrix where the haps are stored. Cheers, Federico __ R-help@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
Re: [R] vectorising ifelse()
On 22 Jul 2005, at 11:20, Adaikalavan Ramasamy wrote: Does either 'zippo' or 'zappo' contain the values 1 or 2 ? If so, then you cannot vectorize this code because you are changing the values in 'new' at every iteration and potentially sampling a value from new[ ,1] or new[ ,2] . That's exactly my situation, and is exactly what I want to do. After taking out the typo (and bug) drow[i]0 the code seems to work fast enough... I'll tinker a bit with it, but it could be good enough as it is. Cheers, Federico Calboli -- Federico C. F. Calboli Department of Epidemiology and Public Health Imperial College, St. Mary's Campus Norfolk Place, London W2 1PG Tel +44 (0)20 75941602 Fax +44 (0)20 75943193 f.calboli [.a.t] imperial.ac.uk f.calboli [.a.t] gmail.com __ R-help@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
[R] vectorising ifelse()
Hi All, is there any chance of vectorising the two ifelse() statements in the following code: for(i in gp){ new[i,1] = ifelse(srow[i]0, new[srow[i],zippo[i]], sample(1:100, 1, prob =Y1, rep = T)) new[i,2] = ifelse(drow[i]0, new[drow[i]0,zappo[i]], sample(1:100, 1, prob =Y1, rep = T)) } Where I am forced to check if the value of drow and srow are 0 for each line... in practical terms, I am attributing haplotypes to a pedigree, so I have to give the haplotypes to the parents before I give them to the offspring. The vectors *zippo* and *zappo* are the chances of getting one or the other hap from the sire and dam respectively. *gp* is the vectors of non-ancestral animals. *new* is a two col matrix where the haps are stored. Cheers, Federico -- Federico C. F. Calboli Department of Epidemiology and Public Health Imperial College, St Mary's Campus Norfolk Place, London W2 1PG Tel +44 (0)20 7594 1602 Fax (+44) 020 7594 3193 f.calboli [.a.t] imperial.ac.uk f.calboli [.a.t] gmail.com __ R-help@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