[R] Constructing loops in which i+1st element depends on ith
Michael Rennie
mrennie at utm.utoronto.ca
Mon Jun 30 23:01:01 CEST 2003
I feel greedy posting for help twice in one day- please forgive me, but the
thesis can't wait.
I have been trying to get an if
else statement working in a loop I am
writing, in which I specify a variable value to 9.2 (Wo) on the first
iteration, but for subsequent iterations, to adopt a value as a function of
variables from the previous iteration.
When I comment out the if
else statement, let W = Wo, and adjust the rest of
the file so I am reading the first row of the variables specified instead of
entire columns in my calculations, the calculations all work nicely without
errors - I get the numbers I ought to in one row of bio.
When I activate the loop and try to run the file with the if
.else, it looks
like it wants to work, but heres where it stalls;
Error in "[<-"(*tmp*, i, value = ((bio[i - 1, 1] * bio[i - 1, 9])/Ef)) :
nothing to replace with
Execution halted
(see complete data file below)...
I guess its because it cant find the alternate case because it hasnt written
it yet.
So, my problem is two-fold:
1. How can I write my loop properly so that at the end of each iteration,
it records the row of data from bio such that I can cbind it back to my Day
data?
2. How can I specify the loop to use information from the i+1st element in
calculations for calculations in the ith?
Im pretty sure my problem is in where I create and specify files in the loop,
but beyond that, I dont know.
Heres the part of my command file thats giving me trouble. Everything before
this is simply specifying variable names to numbers, which is not giving be
problems.
#Bring in temp file
temper <- scan("temp2.dat", na.strings = ".", list(Day=0, Temp=0))
#Day = day on which iteration begins, starts at day 1, ends on 366
#Temp = temperature
Day <- temper$Day ; Temp<-temper$Temp ;
temp<- cbind (Day, Temp)
#temp [,2]
p<- 0.558626306252032
ACT <- 1.66764519286918
Vc<-((CTM-temp[,2])/(CTM-CTO))
Vr<-((RTM-temp[,2])/(RTM-RTO))
comp<- cbind (Day, Temp, Vc, Vr)
bio<-NULL
M<- length(Day) #number of days iterated
for (i in 1:M)
{
weight<- function(Day)
{
W<-NULL
if (Day[i]==1) W[i] <- Wo
{W[i] <- ((bio[i-1,1]*bio[i-1,9])/Ef)
}
W
}
W<-weight(Day)
#W<-Wo
C<- p*CA*(W^CB)*((comp[,3]^Xc)*(exp(Xc*(1-comp[,3]))))*Pc
ASMR<- (ACT*RA*(W^(RB))*((comp[,4]^Xa)*(exp(Xa*(1-comp[,4])))))
SMR<- (ASMR/ACT)
A<- (ASMR-SMR)
F<- (FA*(comp[,2]^FB)*(exp(FG*p))*C)
U<- (UA*(comp[,2]^UB)*(exp(UG*p))*(C-F))
SDA<- (S*(C-F))
Gr<- (C-(ASMR+F+U+SDA))
bio<- rbind(c(W, C, ASMR, SMR, A, F, U, SDA, Gr))
dimnames (bio) <-list(NULL, c
("W", "C", "ASMR", "SMR", "A", "F", "U", "SDA", "Gr"))
}
bio
I would be grateful for any suggestions people might have.
Thanks,
Mike
--
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