[R] R looping help
rishard
orc15 at uclive.ac.nz
Thu May 16 12:17:53 CEST 2013
Hey I'm not really sure what I should put on here, but I am having trouble
with my R code. I am trying to get the p-values, R^2s etc for a number of
different groups of variables that are all in one dataset.
This is the code:
#Stand counter
st<-1
#Collections
stands<-numeric(67)
slopes<-numeric(67)
intercepts<-numeric(67)
mses<-numeric(67)
rsquares<-numeric(67)
pValues<-numeric(67)
#Start lists for X and Y values within each stand
xi<-numeric(0)
yi<-numeric(0)
#Set the first element to the starting X and Y values
xi[1]=X[1]
yi[1]=Y[1]
#Start looping working through your data, record by record
for (i in 2:length(X)) {
#If you are in the same stand as on the last record, continue to
#collect X and Y values
if(Stand[i]==Stand[i-1]) {
xi=cbind(xi,X[i])
yi=cbind(yi,Y[i])
} else {
#If a new stand is encountered make your linear model and
#collect statistics
model<-lm(yi~xi)
stands[st]<-Stand[i-1]
intercepts[st]<-model$coefficients[1]
slopes[st]<-model$coefficients[2]
mses[st]<-sum(resid(model)^2)/(length(xi)-2)
ssr<-var(yi)*(length(xi)-1)-sum(resid(model)^2)
rsquares[st]<-ssr/(var(yi)*(length(xi)-1))
fRatio<-ssr/mses[st]
pValues[st]<-1-pf(fRatio,1,length(xi)-2)
#Increment the stand number, zero the within stand collections,
#and start again
st<-st+1
xi<-numeric(0)
yi<-numeric(0)
xi[1]=X[i]
yi[1]=Y[i]
}
}
#Make your data set
standEstimates<-data.frame(standID=stands,intercept=intercepts,slop=slopes,mse=mses,rSquare=rsquares,pValue=pValues)
The standEstimate outputs look like this:
standID intercept slop mse rSquare pValue
1 6833 319.2470 NA 0 NA NA
2 756 708.7470 NA 0 NA NA
3 795 508.2290 NA 0 NA NA
4 1249 503.1460 NA 0 NA NA
5 1331 703.0620 NA 0 NA NA
6 1417 747.7620 NA 0 NA NA
7 4715 549.3400 NA 0 NA NA
8 4850 603.9940 NA 0 NA NA
9 2105 573.3270 NA 0 NA NA
Etc etc
and I get these warnings:
1: In rsquares[st] <- ssr/(var(yi) * (length(xi) - 1)) :
number of items to replace is not a multiple of replacement length
2: In pValues[st] <- 1 - pf(fRatio, 1, length(xi) - 2) :
number of items to replace is not a multiple of replacement length
3: In rsquares[st] <- ssr/(var(yi) * (length(xi) - 1)) :
number of items to replace is not a multiple of replacement length
4: In pValues[st] <- 1 - pf(fRatio, 1, length(xi) - 2) :
number of items to replace is not a multiple of replacement length
5: In rsquares[st] <- ssr/(var(yi) * (length(xi) - 1)) :
number of items to replace is not a multiple of replacement length
6: In pValues[st] <- 1 - pf(fRatio, 1, length(xi) - 2) :
number of items to replace is not a multiple of replacement length
7: In rsquares[st] <- ssr/(var(yi) * (length(xi) - 1)) :
number of items to replace is not a multiple of replacement length
8: In pValues[st] <- 1 - pf(fRatio, 1, length(xi) - 2) :
number of items to replace is not a multiple of replacement length
9: In rsquares[st] <- ssr/(var(yi) * (length(xi) - 1)) :
number of items to replace is not a multiple of replacement length
10: In pValues[st] <- 1 - pf(fRatio, 1, length(xi) - 2) :
number of items to replace is not a multiple of replacement length
11: In rsquares[st] <- ssr/(var(yi) * (length(xi) - 1)) :
number of items to replace is not a multiple of replacement length
12: In pValues[st] <- 1 - pf(fRatio, 1, length(xi) - 2) :
number of items to replace is not a multiple of replacement length
13: In rsquares[st] <- ssr/(var(yi) * (length(xi) - 1)) :
number of items to replace is not a multiple of replacement length
14: In pValues[st] <- 1 - pf(fRatio, 1, length(xi) - 2) :
etc etc
Sorry if I haven't set this post out right, or haven't provided enough
information. But can anyone see why it is not giving me any returns for R^2
etc?
--
View this message in context: http://r.789695.n4.nabble.com/R-looping-help-tp4667180.html
Sent from the R help mailing list archive at Nabble.com.
More information about the R-help
mailing list