[R] Excel can do what R can't?????

Jerome Asselin jerome at hivnet.ubc.ca
Tue Jul 15 22:41:59 CEST 2003


I thought that you could simplify your code by using something like 
c(0,W[-length(W)]) as opposed to W[i-1] in a loop, but now I understand 
it's not that easy. Unless you can analytically simplify the calculation 
of W in order to vectorize it, it's going to be slow.

However, many of the lines don't depend on [i] and not on [i-1]. Therefore 
you could simplify those as they don't need to be calculated within the 
loop.

HTH,
Jerome

On July 15, 2003 01:24 pm, Michael Rennie wrote:
> At 11:47 AM 7/15/03 -0700, Jerome Asselin wrote:
> >Mike,
> >
> >The definition of your function f() seems quite inefficient. You could
> >vectorize it, which would shorten and speed up your code, especially if
> > M is large.
>
> Hi, Jerome
>
> I don;t think I can vectorize it, since in the iteration loop, the value
> for each [i] is dependent on the value of [i-1], so I require the loop
> to go through each [i] before I can get my values for any particular
> vector (variable).  I actually had my program operating this way in the
> first place, but I get all sorts of warnings and the 'optim' function
> especially doesn't seem to appreciate it.
>
> >See the R introduction file available online to learn how to do
> >it if you don't already know how. Also, you have to return only one
> >argument. Unless I'm wrong, your function wants to return Wtmod,
> > Hgtmod, q and f. I'm don't think this would change anything in this
> > case, but you should definitely clean this up!
>
> The calls to Wtmod, q, and Hgtmod are all just residual from the
> development of the loop inside function f.  I would like to get the last
> line of 'bioday' reported from within the loop, had I figured out the
> optimization, but that point is rather moot unless I can get the
> optimization functioning.
>
> >Another advice... If you can simplify your example into a few lines of
> >"ready-to-execute" code with a toy dataset, then it's easy for everyone
> > to try it out and you can get more feedback. The code you've included
> > is quite large and cumbersome. For one thing, you could easily have
> > removed the lines of code that were commented out.
> >
> >Meanwhile, I would suggest that you go back to the basics of R to clean
> > up your code.
>
> Thanks for the advice- every bit helps if I eventually get this thing to
> work.....
>
> Mike
>
> >Sorry I can't be more helpful.
> >Jerome
> >
> >On July 15, 2003 10:46 am, Michael Rennie wrote:
> > > Hi there
> > >
> > > I thought this would be of particular interest to people using
> > > 'optim' functions and perhaps people involved with R development.
> > >
> > > I've been beaten down by R trying to get it to perform an
> > > optimization on a mass-balance model.  I've written the same program
> > > in excel, and using the 'solver' function, it comes up with an
> > > answer for my variables (p, ACT, which I've assigned to q in R) that
> > > gives a solution to the function "f" in about 3 seconds, with a
> > > value of the function around 0.0004. R, on the other hand, appears
> > > to get stuck in local minima, and spits back an approximation that
> > > is close the the p, ACT values excel does, but not nearly precise
> > > enough for my needs, and not nearly as precise as excel, and it
> > > takes about 3 minutes.  Also, the solution for the value it returns
> > > for the function is about 8 orders of magnitude greater than the
> > > excel version, so I can't really say the function is approximating
> > > zero.  I was able to determine this using a  "trace" command on
> > > function f, which is listed below.
> > >
> > > This is very likely due to the fact that I've made some coding error
> > > along the way, or have done something else wrong, but I don't know.
> > > Either way, I am shocked and surprised that a program like excel is
> > > outperforming R.  I've attached my command file and the dataset
> > > "temp.dat" at the bottom of this e-mail for anyone who would like to
> > > fiddle around with it, and if you come up with something, PLEASE let
> > > me know- In the meantime, I've got to start fiddling with excel and
> > > figuring out how to automate the solver calculation.....
> > >
> > > Briefly, the point of the program is to approximate the model output
> > > from an iterative calculation, Wtmod and Hgtmod, to user-specified
> > > endpoints Wt and Hgt, by seeking the optimal values of p, ACT
> > > involved in the iterative process.
> > >
> > > Also, if your interested in recent correspondence that explains the
> > > point of the program a bit, and how the function ties in to the
> > > iterative process, search the R help forum for e-mails entitled "[R]
> > > problem with coding for 'optim' in R".  Thanks also to Roger Peng
> > > and numerous others for helping me get this far.
> > >
> > > The whole point of me doing this in R was because it's supposed to
> > > be spectacularly fast at automating complex loops, but seems to be
> > > falling short for this application.  Hopefully it's something wrong
> > > with my coding and not with R itself.
> > >
> > > Mike
> > >
> > > R COMMAND FILE:
> > >
> > > ####################################
> > > #    perch.R                       #
> > > # Hewett and Johnson bioenergetics #
> > > # model combined with              #
> > > # Trudel MMBM to estimate          #
> > > # Consumption in perch in R code   #
> > > # Execute with                     #
> > > # R --vanilla < perch.R > perch.out#
> > > ####################################
> > >
> > > #USER INPUT BELOW
> > >
> > > #Weight at time 0
> > > Wo<- 9.2
> > >
> > > #Hg concentration at time 0 (ugHg/g wet weight)
> > > Hgo<- 0.08
> > >
> > > #Weight at time t
> > > Wt<- 32.2
> > >
> > > #Hg concentration at time t (ugHg/g wet weight)
> > > Hgt<- 0.110
> > >
> > > #Prey methylmercury concentration (as constant)
> > > Hgp<- 0.033
> > >
> > > #Prey caloric value (as constant)
> > > Pc<- 800
> > >
> > > #Energy density of fish (as constant, calories)
> > > Ef <- 1000
> > >
> > > #Maturity status, 0=immature, 1=mature
> > > Mat<- 0
> > >
> > > #Sex, 1=male, 2=female
> > > Sex<- 1
> > >
> > > #USER INPUT ABOVE
> > >
> > > #Bioenergetics parameters for perch
> > > CA <- 0.25
> > > CB <- 0.73  #same as 1+(-0.27)- convert g/g/d to g/d * Pc to get
> > > cal/d CQ <- 2.3
> > > CTO <- 23
> > > CTM <- 28
> > > Zc<- (log(CQ))*(CTM-CTO)
> > > Yc<- (log(CQ))*(CTM-CTO+2)
> > > Xc<- ((Zc^2)*(1+(1+40/Yc)^0.5)^2)/400
> > >
> > > RA <- 34.992  #0.0108*3240 cal/g 02, converting weight of 02 to cal
> > > RB <- 0.8   #same as 1+(-0.2) see above...
> > > RQ <- 2.1
> > > RTO <- 28
> > > RTM <- 33
> > > Za <- (log(RQ))*(RTM-RTO)
> > > Ya<- (log(RQ))*(RTM-RTO+2)
> > > Xa<- ((Za^2)*(1+(1+40/Ya)^0.5)^2)/400
> > >
> > > S <- 0.172
> > >
> > > FA <- 0.158
> > > FB <- -0.222
> > > FG <- 0.631
> > >
> > > UA<- 0.0253
> > > UB<- 0.58
> > > UG<- -0.299
> > >
> > > #Mass balance model parameters
> > > EA <- 0.002938
> > > EB <- -0.2
> > > EQ <- 0.066
> > > a <- 0.8
> > >
> > > #Specifying sex-specific parameters
> > >
> > > GSI<- NULL
> > >
> > > if (Sex==1) GSI<-0.05 else
> > > if (Sex==2) GSI<-0.17
> > >
> > > # Define margin of error functions
> > > #merror <- function(phat,M,alpha) # (1-alpha)*100% merror for a
> > > proportion #    {
> > > #    z <- qnorm(1-alpha/2)
> > > #    merror <- z * sqrt(phat*(1-phat)/M)  # M is (Monte Carlo)
> > > sample size #    merror
> > > #    }
> > >
> > > #Bring in temp file
> > >
> > > temper <- scan("temp.dat", na.strings = ".", list(Day=0, jday=0,
> > > Temp=0))
> > >
> > > Day<-temper$Day ; jday<-temper$jday ; Temp<-temper$Temp ;
> > >
> > > temp<- cbind (Day, jday, Temp)
> > > #Day = number of days modelled, jday=julian day, Temp = daily avg.
> > > temp. #temp [,2]
> > >
> > > Vc<-(CTM-(temp[,3]))/(CTM-CTO)
> > > Vr<-(RTM-(temp[,3]))/(RTM-RTO)
> > >
> > > comp<- cbind (Day, jday, Temp, Vc, Vr)
> > >
> > > #comp
> > >
> > > bio<-matrix(NA, ncol=13, nrow=length(Day))
> > > W<-NULL
> > > C<-NULL
> > > ASMR<-NULL
> > > SMR<-NULL
> > > A<-NULL
> > > F<-NULL
> > > U<-NULL
> > > SDA<-NULL
> > > Gr<-NULL
> > > Hg<-NULL
> > > Ed<-NULL
> > > GHg<-NULL
> > > K<-NULL
> > > Expegk<-NULL
> > > EGK<-NULL
> > > p<-NULL
> > > ACT<-NULL
> > >
> > > #starting values for p, ACT
> > > p <- 1 #  0.558626306252032 #solution set for p, ACT from excel
> > > 'solver' f'n ACT <- 2 #  1.66764519286918
> > >
> > > q<-c(p,ACT)
> > >
> > > #specify sttarting values
> > > #q0<-c(p = 1, ACT = 1)
> > >
> > > #introduce function to solve
> > > f <- function (q)
> > > {
> > >
> > >
> > > M<- length(Day) #number of days iterated
> > >
> > > for (i in 1:M)
> > > {
> > >
> > > #Bioenergetics model
> > >
> > > if (Day[i]==1) W[i] <- Wo else
> > > if (jday[i]==121 && Mat==1) W[i] <- (W[i-1]-(W[i-1]*GSI*1.2)) else
> > > W[i] <- (W[i-1]+(Gr[i-1]/Ef))
> > > #W
> > >
> > > #W<-Wo
> > >
> > > C[i]<-
> > > q[1]*CA*(W[i]^CB)*((comp[i,4])^Xc)*(exp(Xc*(1-(comp[i,4]))))*Pc
> > >
> > > ASMR[i]<-
> > > q[2]*RA*(W[i]^RB)*((comp[i,5])^Xa)*(exp(Xa*(1-(comp[i,5]))))
> > >
> > > SMR[i]<- (ASMR[i]/q[2])
> > >
> > > A[i]<- (ASMR[i]-SMR[i])
> > >
> > > F[i]<- (FA*((comp[i,3])^FB)*(exp(FG*p))*C[i])
> > >
> > > U[i]<- (UA*((comp[i,3])^UB)*(exp(UG*p))*(C[i]-F[i]))
> > >
> > > SDA[i]<- (S*(C[i]-F[i]))
> > >
> > > Gr[i]<- (C[i]-(ASMR[i]+F[i]+U[i]+SDA[i]))
> > >
> > > #Trudel MMBM
> > >
> > > if (Day[i]==1) Hg[i] <- Hgo else Hg[i] <-
> > > a*Hgp*(C[i-1]/Pc/W[i-1])/EGK[i-1]*(1-Expegk[i-1])+(Hg[i-1]*Expegk[i-
> > >1])
> > >
> > > Ed[i]<- EA*(W[i]^EB)*(exp(EQ*(comp[i,3])))
> > >
> > > GHg[i] <- Gr[i]/Ef/W[i]
> > >
> > > if (Sex==1)
> > > K[i]<-(((0.1681*(10^(1.3324+(0.000453*Hg[i])))/1000)/Hg[i])*GSI)/M
> > > else if (Sex==2)
> > > K[i]<-(((0.1500*(10^(0.8840+(0.000903*Hg[i])))/1000)/Hg[i])*GSI)/M #
> > > = dw/ww conversion * gonad ~ body conc'n function(ng/g) / convert to
> > > ug/g # then express as Q times GSI gives K / M gives daily K
> > >
> > > EGK[i] <- (Ed[i] + GHg[i] + (K[i]*Mat))
> > >
> > > Expegk[i] <- exp(-1*EGK[i])
> > >
> > > bio<- cbind(W, C, ASMR, SMR, A, F, U, SDA, Gr, Ed, GHg, EGK, Hg)
> > >
> > > }
> > >
> > > #warnings()
> > >
> > > dimnames (bio) <-list(NULL, c("W", "C", "ASMR", "SMR", "A", "F",
> > > "U", "SDA", "Gr", "Ed", "GHg", "EGK", "Hg"))
> > >
> > > bioday<-cbind(jday, W, C, ASMR, SMR, A, F, U, SDA, Gr, Ed, GHg, EGK,
> > > Hg)
> > >
> > > dimnames (bioday) <-list(NULL, c("jday", "W", "C", "ASMR", "SMR",
> > > "A", "F", "U", "SDA", "Gr", "Ed", "GHg", "EGK", "Hg"))
> > >
> > > #bioday
> > >
> > > Wtmod<- bioday [length(W),2]
> > > Wtmod
> > >
> > > Hgtmod<- bioday [length(Hg),14]
> > > Hgtmod
> > >
> > > q
> > >
> > > f <- 1000000000*(((((Wt-Wtmod)^2)/Wt) + (((Hgt-Hgtmod)^2)/Hgt))^2) ;
> > > f
> > >
> > > #warnings()
> > >
> > > #write.table (bioday, file = "perch.csv", append = FALSE, sep=",",
> > > na = NA, col.names = TRUE)
> > >
> > >
> > >
> > > #nlm(f,c(1,1))
> > > }
> > >
> > > optim(q, f, method = "L-BFGS-B",
> > >          lower = c(0.2, 1), upper=c(2, 3),
> > >          control = list(fnscale = 0.001))
> > >
> > >
> > > TRACE FUNCTION USED TO DETERMINE WHERE R IS GETTING STUCK;
> > >
> > >   trace("f", quote(print(q)), at = 1, print = FALSE)
> > >
> > > o <- optim(c(1,2), f, method = "L-BFGS-B", lower = c(0.2,1), upper =
> > > c(2,3))
> > >
> > > DATA FOR TEMP.DAT:
> > >
> > > 1       153     9.4
> > > 2       154     9.6
> > > 3       155     9.8
> > > 4       156     10
> > > 5       157     10.2
> > > 6       158     10.4
> > > 7       159     10.6
> > > 8       160     10.8
> > > 9       161     11
> > > 10      162     11.2
> > > 11      163     11.4
> > > 12      164     11.6
> > > 13      165     11.8
> > > 14      166     12
> > > 15      167     12.3
> > > 16      168     12.5
> > > 17      169     12.7
> > > 18      170     12.9
> > > 19      171     13.1
> > > 20      172     13.4
> > > 21      173     13.6
> > > 22      174     13.8
> > > 23      175     14
> > > 24      176     14.2
> > > 25      177     14.5
> > > 26      178     14.7
> > > 27      179     14.9
> > > 28      180     15.1
> > > 29      181     15.4
> > > 30      182     15.6
> > > 31      183     15.8
> > > 32      184     16
> > > 33      185     16.2
> > > 34      186     16.5
> > > 35      187     16.7
> > > 36      188     16.9
> > > 37      189     17.1
> > > 38      190     17.3
> > > 39      191     17.5
> > > 40      192     17.7
> > > 41      193     17.9
> > > 42      194     18.1
> > > 43      195     18.3
> > > 44      196     18.5
> > > 45      197     18.7
> > > 46      198     18.9
> > > 47      199     19
> > > 48      200     19.2
> > > 49      201     19.4
> > > 50      202     19.5
> > > 51      203     19.7
> > > 52      204     19.9
> > > 53      205     20
> > > 54      206     20.2
> > > 55      207     20.3
> > > 56      208     20.4
> > > 57      209     20.5
> > > 58      210     20.7
> > > 59      211     20.8
> > > 60      212     20.9
> > > 61      213     21
> > > 62      214     21.1
> > > 63      215     21.2
> > > 64      216     21.3
> > > 65      217     21.3
> > > 66      218     21.4
> > > 67      219     21.5
> > > 68      220     21.5
> > > 69      221     21.6
> > > 70      222     21.6
> > > 71      223     21.6
> > > 72      224     21.7
> > > 73      225     21.7
> > > 74      226     21.7
> > > 75      227     21.7
> > > 76      228     21.7
> > > 77      229     21.7
> > > 78      230     21.7
> > > 79      231     21.6
> > > 80      232     21.6
> > > 81      233     21.6
> > > 82      234     21.5
> > > 83      235     21.5
> > > 84      236     21.4
> > > 85      237     21.3
> > > 86      238     21.3
> > > 87      239     21.2
> > > 88      240     21.1
> > > 89      241     21
> > > 90      242     20.9
> > > 91      243     20.8
> > > 92      244     20.7
> > > 93      245     20.5
> > > 94      246     20.4
> > > 95      247     20.3
> > > 96      248     20.2
> > > 97      249     20
> > > 98      250     19.9
> > > 99      251     19.7
> > > 100     252     19.5
> > > 101     253     19.4
> > > 102     254     19.2
> > > 103     255     19
> > > 104     256     18.9
> > > 105     257     18.7
> > > 106     258     18.5
> > > 107     259     18.3
> > > 108     260     18.1
> > > 109     261     17.9
> > > 110     262     17.7
> > > 111     263     17.5
> > > 112     264     17.3
> > > 113     265     17.1
> > > 114     266     16.9
> > > 115     267     16.7
> > > 116     268     16.5
> > > 117     269     16.2
> > > 118     270     16
> > > 119     271     15.8
> > > 120     272     15.6
> > > 121     273     15.4
> > > 122     274     15.1
> > > 123     275     14.9
> > > 124     276     14.7
> > > 125     277     14.5
> > > 126     278     14.2
> > > 127     279     14
> > > 128     280     13.8
> > > 129     281     13.6
> > > 130     282     13.4
> > > 131     283     13.1
> > > 132     284     12.9
> > > 133     285     12.7
> > > 134     286     12.5
> > > 135     287     12.3
> > > 136     288     12
> > > 137     289     11.8
> > > 138     290     11.6
> > > 139     291     11.4
> > > 140     292     11.2
> > > 141     293     11
> > > 142     294     10.8
> > > 143     295     10.6
> > > 144     296     10.4
> > > 145     297     10.2
> > > 146     298     10
> > > 147     299     9.8
> > > 148     300     9.6
> > > 149     301     9.4
> > > 150     302     9.3
> > > 151     303     9.1
> > > 152     304     8.9
> > > 153     305     8.7
> > > 154     306     8.6
> > > 155     307     8.4
> > > 156     308     8.2
> > > 157     309     8.1
> > > 158     310     7.9
> > > 159     311     7.8
> > > 160     312     7.6
> > > 161     313     7.5
> > > 162     314     7.3
> > > 163     315     7.2
> > > 164     316     7
> > > 165     317     6.9
> > > 166     318     6.8
> > > 167     319     6.7
> > > 168     320     6.5
> > > 169     321     6.4
> > > 170     322     6.3
> > > 171     323     6.2
> > > 172     324     6.1
> > > 173     325     6
> > > 174     326     5.8
> > > 175     327     5.7
> > > 176     328     5.6
> > > 177     329     5.5
> > > 178     330     5.5
> > > 179     331     5.4
> > > 180     332     5.3
> > > 181     333     5.2
> > > 182     334     5.1
> > > 183     335     5
> > > 184     336     5
> > > 185     337     4.9
> > > 186     338     4.8
> > > 187     339     4.7
> > > 188     340     4.7
> > > 189     341     4.6
> > > 190     342     4.5
> > > 191     343     4.5
> > > 192     344     4.4
> > > 193     345     4.4
> > > 194     346     4.3
> > > 195     347     4.3
> > > 196     348     4.2
> > > 197     349     4.2
> > > 198     350     4.1
> > > 199     351     4.1
> > > 200     352     4
> > > 201     353     4
> > > 202     354     4
> > > 203     355     3.9
> > > 204     356     3.9
> > > 205     357     3.8
> > > 206     358     3.8
> > > 207     359     3.8
> > > 208     360     3.8
> > > 209     361     3.7
> > > 210     362     3.7
> > > 211     363     3.7
> > > 212     364     3.6
> > > 213     365     3.6
> > > 214     366     3.6
> > > 215     1       3.2
> > > 216     2       3.2
> > > 217     3       3.2
> > > 218     4       3.2
> > > 219     5       3.2
> > > 220     6       3.2
> > > 221     7       3.2
> > > 222     8       3.2
> > > 223     9       3.2
> > > 224     10      3.2
> > > 225     11      3.2
> > > 226     12      3.2
> > > 227     13      3.2
> > > 228     14      3.2
> > > 229     15      3.2
> > > 230     16      3.2
> > > 231     17      3.2
> > > 232     18      3.2
> > > 233     19      3.2
> > > 234     20      3.2
> > > 235     21      3.2
> > > 236     22      3.2
> > > 237     23      3.2
> > > 238     24      3.2
> > > 239     25      3.2
> > > 240     26      3.2
> > > 241     27      3.2
> > > 242     28      3.2
> > > 243     29      3.2
> > > 244     30      3.2
> > > 245     31      3.2
> > > 246     32      3.2
> > > 247     33      3.2
> > > 248     34      3.2
> > > 249     35      3.2
> > > 250     36      3.2
> > > 251     37      3.2
> > > 252     38      3.2
> > > 253     39      3.2
> > > 254     40      3.2
> > > 255     41      3.2
> > > 256     42      3.2
> > > 257     43      3.2
> > > 258     44      3.2
> > > 259     45      3.2
> > > 260     46      3.2
> > > 261     47      3.2
> > > 262     48      3.2
> > > 263     49      3.2
> > > 264     50      3.2
> > > 265     51      3.2
> > > 266     52      3.2
> > > 267     53      3.2
> > > 268     54      3.3
> > > 269     55      3.3
> > > 270     56      3.3
> > > 271     57      3.3
> > > 272     58      3.3
> > > 273     59      3.3
> > > 274     60      3.3
> > > 275     61      3.3
> > > 276     62      3.3
> > > 277     63      3.3
> > > 278     64      3.3
> > > 279     65      3.3
> > > 280     66      3.3
> > > 281     67      3.3
> > > 282     68      3.3
> > > 283     69      3.3
> > > 284     70      3.3
> > > 285     71      3.4
> > > 286     72      3.4
> > > 287     73      3.4
> > > 288     74      3.4
> > > 289     75      3.4
> > > 290     76      3.4
> > > 291     77      3.4
> > > 292     78      3.4
> > > 293     79      3.5
> > > 294     80      3.5
> > > 295     81      3.5
> > > 296     82      3.5
> > > 297     83      3.5
> > > 298     84      3.5
> > > 299     85      3.6
> > > 300     86      3.6
> > > 301     87      3.6
> > > 302     88      3.6
> > > 303     89      3.6
> > > 304     90      3.7
> > > 305     91      3.7
> > > 306     92      3.7
> > > 307     93      3.8
> > > 308     94      3.8
> > > 309     95      3.8
> > > 310     96      3.8
> > > 311     97      3.9
> > > 312     98      3.9
> > > 313     99      4
> > > 314     100     4
> > > 315     101     4
> > > 316     102     4.1
> > > 317     103     4.1
> > > 318     104     4.2
> > > 319     105     4.2
> > > 320     106     4.3
> > > 321     107     4.3
> > > 322     108     4.4
> > > 323     109     4.4
> > > 324     110     4.5
> > > 325     111     4.5
> > > 326     112     4.6
> > > 327     113     4.7
> > > 328     114     4.7
> > > 329     115     4.8
> > > 330     116     4.9
> > > 331     117     5
> > > 332     118     5
> > > 333     119     5.1
> > > 334     120     5.2
> > > 335     121     5.3
> > > 336     122     5.4
> > > 337     123     5.5
> > > 338     124     5.5
> > > 339     125     5.6
> > > 340     126     5.7
> > > 341     127     5.8
> > > 342     128     6
> > > 343     129     6.1
> > > 344     130     6.2
> > > 345     131     6.3
> > > 346     132     6.4
> > > 347     133     6.5
> > > 348     134     6.7
> > > 349     135     6.8
> > > 350     136     6.9
> > > 351     137     7
> > > 352     138     7.2
> > > 353     139     7.3
> > > 354     140     7.5
> > > 355     141     7.6
> > > 356     142     7.8
> > > 357     143     7.9
> > > 358     144     8.1
> > > 359     145     8.2
> > > 360     146     8.4
> > > 361     147     8.6
> > > 362     148     8.7
> > > 363     149     8.9
> > > 364     150     9.1
> > > 365     151     9.3
> > > 366     152     9.3
> > >
> > >
> > >
> > > Michael Rennie
> > > M.Sc. Candidate
> > > University of Toronto at Mississauga
> > > 3359 Mississauga Rd. N.
> > > Mississauga, ON  L5L 1C6
> > > Ph: 905-828-5452  Fax: 905-828-3792
> > >       [[alternative HTML version deleted]]
> > >
> > > ______________________________________________
> > > R-help at stat.math.ethz.ch mailing list
> > > https://www.stat.math.ethz.ch/mailman/listinfo/r-help
>
> Michael Rennie
> M.Sc. Candidate
> University of Toronto at Mississauga
> 3359 Mississauga Rd. N.
> Mississauga, ON  L5L 1C6
> Ph: 905-828-5452  Fax: 905-828-3792




More information about the R-help mailing list