Re: [R] vectorising ifelse()

2005-07-22 Thread Adaikalavan Ramasamy
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()

2005-07-22 Thread Federico Calboli
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()

2005-07-21 Thread Federico Calboli
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