Thomas Schu
2012-Aug-15 15:24 UTC
[R] store the results of two connected and "disturbed" for-loops to data.frame
Dear all, here is a example of my problem: /#data# g<-c(1,1,1,2,2,2) A<-runif(6,min=1,max=5) B<-runif(6,min=100,max=1000) C<-runif(6,min=30,max=31) D<-runif(6,min=67,max=98765) var<-cbind(A,B,C,D) label<-colnames(var) store<-data.frame(matrix(ncol=2)) colnames(store)=c("usedVar","prediction") library(MASS)#get lda for (i in c(1:4)) { for (k in c(1:4)) { if(i==k)break()#using the same variable will not work in lda dis<-lda(g~var[,i]+var[,k],CV=TRUE,fold=6)#linear discriminant function ct<-table(g,dis$class) pre<-sum(diag(prop.table(ct)))# Prediction of cv-reclassification #store the results *a<-i+4*(k-1)* store[a,1]<-paste(label[i],label[k]) store[a,2]<-round(pre,4) } } store/ I have got two for-loops getting "disturbed" by an if-break-case (disturbed means, that I don?t need the information for these cases). By using /*a<-i+4*(k-1)*/ for storing results to my "result"data.frame, the break-cases will be included as NA too. *Are there a way to store my loop-results without the NA-cases to get an continous dataset??? * I?m pleased about every suggestion. Thank you and best regards Thomas -- View this message in context: http://r.789695.n4.nabble.com/store-the-results-of-two-connected-and-disturbed-for-loops-to-data-frame-tp4640374.html Sent from the R help mailing list archive at Nabble.com.
Rui Barradas
2012-Aug-15 15:50 UTC
[R] store the results of two connected and "disturbed" for-loops to data.frame
Hello, Just start the loop in 'k' after the value for 'i'. Try the following. nr <- ncol(var) store<-data.frame(matrix(nrow=nr*(nr - 1)/2, ncol=2)) colnames(store)=c("usedVar","prediction") a <- 0 for (i in c(1:4)) { for (k in (i:4)[-1]) { dis<-lda(g~var[,i]+var[,k],CV=TRUE,fold=6)#linear discriminant function ct<-table(g,dis$class) pre<-sum(diag(prop.table(ct)))# Prediction of cv-reclassification #store the results a <- a + 1 store[a,1]<-paste(label[i],label[k]) store[a,2]<-round(pre,4) } } store Also, 'var' is a bad name for a variable, it already is an R function name. Hope this helps, Rui Barradas Em 15-08-2012 16:24, Thomas Schu escreveu:> Dear all, > > here is a example of my problem: > > /#data# > g<-c(1,1,1,2,2,2) > A<-runif(6,min=1,max=5) > B<-runif(6,min=100,max=1000) > C<-runif(6,min=30,max=31) > D<-runif(6,min=67,max=98765) > var<-cbind(A,B,C,D) > label<-colnames(var) > > store<-data.frame(matrix(ncol=2)) > colnames(store)=c("usedVar","prediction") > > library(MASS)#get lda > > for (i in c(1:4)) > { > for (k in c(1:4)) > { > if(i==k)break()#using the same variable will not work in lda > > dis<-lda(g~var[,i]+var[,k],CV=TRUE,fold=6)#linear discriminant function > ct<-table(g,dis$class) > pre<-sum(diag(prop.table(ct)))# Prediction of cv-reclassification > > #store the results > *a<-i+4*(k-1)* > store[a,1]<-paste(label[i],label[k]) > store[a,2]<-round(pre,4) > } > } > store/ > > I have got two for-loops getting "disturbed" by an if-break-case (disturbed > means, that I don?t need the information for these cases). > By using /*a<-i+4*(k-1)*/ for storing results to my "result"data.frame, the > break-cases will be included as NA too. > *Are there a way to store my loop-results without the NA-cases to get an > continous dataset??? * > > I?m pleased about every suggestion. > > Thank you and best regards > Thomas > > > > > > > > -- > View this message in context: http://r.789695.n4.nabble.com/store-the-results-of-two-connected-and-disturbed-for-loops-to-data-frame-tp4640374.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code.
Thomas Schu
2012-Aug-15 19:23 UTC
[R] store the results of two connected and "disturbed" for-loops to data.frame
Dear Mr. Barradas , Thank you very much! It works very well, especially defining a<-0 and using a<-a+1 as some kind of loop-count was exactly what i searched for! best regards Thomas -- View this message in context: http://r.789695.n4.nabble.com/store-the-results-of-two-connected-and-disturbed-for-loops-to-data-frame-tp4640374p4640413.html Sent from the R help mailing list archive at Nabble.com.