Hi Eliza, Some lines of code in the end didn't look very convincing for me. (I didn't change it anyway). For example: ##### amata<-data.frame(amata) aavg<-as.matrix(amata, ncol=1) b<-aavg sss<-(max(b)+max(amata))/2 ####
Also, multiple objects of the same name were created through out the code, which makes it bit hard. ##solution Eliz <- load("/home/arunksa111/Downloads/Elizaaa.RData" ) Dm <- `Dm` ffr <- `ffr` j <- `j` m <- `m` d15<-Dm/mean(Dm) dr1<-ffr/mean(ffr) t<-as.matrix((d15)+(dr1)) w<-sqrt(t) mat1<-w zz<-w ## multiple objects!! rlst<- lapply(1:124,function(i) matrix(sort(as.matrix(zz)[i,],index.return=TRUE)$ix,ncol=1)) rlstN <- lapply(rlst,function(x) { u<- x[2:8,1] mata <- m[,u] a <- matrix(rowMeans(mata),ncol=1) mat <- cbind(j,a) lst1<-lapply(split(mat,col(mat)),function(x){ big<- x>0.8*max(x) n<- length(big) startRunOfBigs<- which(c(big[1],!big[-n] & big[-1])) endRunOfBigs<- which(c(big[-n] & !big[-1], big[n])) index<- vapply(seq_along(startRunOfBigs),function(i) which.max(x[startRunOfBigs[i]:endRunOfBigs[i]])+startRunOfBigs[i]-1L,0L) index<-ifelse(sum(is.na(match(index,c(1,12))))==0 & x[index]!=max(x[index]), NA,index) data.frame(Index=index[!is.na(index)],Value=x[index[!is.na(index)]]) }) nm <- lapply(lst1,function(x) x$Index) max_length<- max(unlist(lapply(nm,length))) nm_filled<-lapply(nm,function(x){ ans<- rep(NA,length=max_length) ans[1:length(x)]<- x return(ans) }) xx<-do.call(cbind,nm_filled) ##didn't see this part being used in the end mat}) ###Using a subset of list elements srlstN <- rlstN[61:62] library(hydroGOF) res <- lapply(srlstN, function(x) { i<- as.list(fun3(x)) xx<- do.call(cbind,i) xx<- t(xx) x1 <- matrix(xx,nrow=1) y <- matrix(0,nrow=125,ncol=125) y[lower.tri(y)]<- x1 yy <- as.dist(y) list1<- lapply(seq_len(ncol(x)),function(j) t(apply(x,1,function(u) u[j]-u))) x2<- matrix(unlist(list1),ncol=15625) x2<- abs(x2) y1 <- colSums(x2,na.rm=FALSE) z1 <- matrix(y1,ncol=125) zz <- as.dist(z1) x3 <- apply(x,2,max) xx1 <- dist(x3) xx1[yy==0] <-0 ff <- zz+yy+xx1 r <- matrix(sort(as.matrix(ff)[125,],index.return=TRUE)$ix,ncol=1) u1 <- r[2:8,1] mata <- x[,u1] amata <- data.frame(rowMeans(mata)) aavg <- as.matrix(amata, ncol=1) sss <- (max(aavg)+max(amata))/2 aavg[which(aavg==max(aavg))] <- sss mat2<- do.call(rbind,lapply(seq_len(ncol(x)), function(j){ RRR <- rmse(aavg,matrix(x[,j],ncol=1)) UUU <- NSE(aavg,matrix(x[,j],ncol=1)) cc <- sum(abs(aavg - x[,j])) c(RRR,UUU,cc) })) colnames(mat2) <- c("RRR","UUU","cc") mat2 }) head(res[[1]]) # RRR UUU cc #[1,] 0.3830867 0.5155312 3.617801 #[2,] 0.5149736 -0.6779912 4.194520 #[3,] 1.4246430 -1.3620793 15.116817 #[4,] 1.0875600 -1.4012783 11.170334 #[5,] 1.3309777 -0.8873588 14.078342 #[6,] 0.2056404 0.9170877 1.959848 A.K. On Tuesday, October 15, 2013 12:08 PM, eliza botto <eliza_bo...@hotmail.com> wrote: Dear Arun, You once helped prepared me following codes for my work. Now i automatically want to replace "61" in all the four steps indicated with ">>>>>" in the beginning, with 1,2,3,4........, 124 so that i have three lists in the end each for RRR, UU and cc. Can it be done? I hope i am clear in my question. Thanks in advance Eliza ## d15 and dr1 are distance matrices of 8*8 dimensions d15<-Dm/mean(Dm) dr1<-ffr/mean(ffr) t<-as.matrix((d15)+(dr1)) w<-sqrt(t) mat1<-w zz<-w >>>>>r<-matrix(sort(as.matrix(zz)[61,],index.return=TRUE)$ix,ncol=1) u<-r[c(2,3,4,5,6,7,8),1] mata<-m[,c(u)]##(shifted) amata<-apply(mata,1,mean) amata<-data.frame(amata) aavg<-as.matrix(amata, ncol=1) a<-aavg ## j is matrix of 8 rows and 2 columns m<-cbind(j,a) mat<-m lst1<-lapply(split(mat,col(mat)),function(x){big<- x>0.8*max(x); n<- length(big);startRunOfBigs<- which(c(big[1],!big[-n] & big[-1])); endRunOfBigs<- which(c(big[-n] & !big[-1], big[n]));index<- vapply(seq_along(startRunOfBigs),function(i) which.max(x[startRunOfBigs[i]:endRunOfBigs[i]])+startRunOfBigs[i]-1L,0L); index<-ifelse(sum(is.na(match(index,c(1,12))))==0 & x[index]!=max(x[index]), NA,index);data.frame(Index=index[!is.na(index)],Value=x[index[!is.na(index)]]) }) nm<-lapply(lst1,function(x)(x$Index)) max_length<- max(unlist(lapply(nm,length))) nm_filled<-lapply(nm,function(x){ans<- rep(NA,length=max_length); ans[1:length(x)]<- x; return(ans)}) xx<-do.call(cbind,nm_filled) fun1<- function(x){ big<- x>0.8*max(x) n<- length(big) startRunOfBigs<- which(c(big[1],!big[-n] & big[-1])) endRunOfBigs<- which(c(big[-n] & !big[-1], big[n])) index<- vapply(seq_along(startRunOfBigs),function(i) which.max(x[startRunOfBigs[i]:endRunOfBigs[i]])+startRunOfBigs[i]-1L,0L) index<-ifelse(sum(is.na(match(index,c(1,12))))==0 & x[index]!=max(x[index]), NA,index) data.frame(Index=index[!is.na(index)],Value=x[index[!is.na(index)]]) } fun3<- function(mat){ indmat<-combn(seq_len(ncol(mat)),2) lst1<- lapply(seq_len(ncol(indmat)),function(i) {mat[,indmat[,i]]}) names(lst1)<-as.character(interaction(as.data.frame(t(indmat)),sep="_",drop=TRUE)) lst2<- lapply(lst1,function(x) {x1<- apply(x,2,fun1)}) lst3<- lapply(lst2,function(x) expand.grid(lapply(x,function(y) y[,1]))) lst4<-lapply(lst3,function(x) unlist(x[which.min(apply(x,1,function(y) abs(diff(y)))),]) ) lst5<- lapply(lst4,function(x){ if(abs(diff(x))>(nrow(mat)/2)){ nrow(mat)-abs(diff(x)) } else(abs(diff(x))) }) lst6<- lapply(seq_along(lst5),function(i) { x2<-lst1[[i]] if(lst5[[i]]==0) { #indx1<- seq(length(x2[,2])) #sum(abs(x2[,1]-x2[indx1,2])) 0 ######################## set to zero } else{ lapply(seq(1+lst5[[i]]),function(j){x3<-x2[,2] indx1<-seq(length(x3)-(j-1)) indx2<-c(setdiff(seq_along(x3),indx1),indx1) sum(abs(x2[,1]-x2[indx2,2])) }) } }) names(lst6)<- names(lst1) lst7<-lapply(lst6,unlist) lst8<- lapply(lst7,function(x) { Seq1<-seq_along(x) if(length(Seq1)==1) x else if(length(Seq1)==2){ sum(abs(x[1]-x[2])) } else{ ind<-rep(Seq1,each=2)[-1] ind1<-ind[-length(ind)] Reduce(`+`,lapply(split(ind1,(seq_along(ind1)-1)%/%2+1),function(i) { abs(diff(x[i])) })) } } ) lst9<-do.call(rbind,lst8) lst9 } fun3(m) ######## i<-as.list(fun3(m)) xx<-do.call(cbind, i) xx<-t(xx) x<-matrix(xx,nrow=1) y <- matrix(0, nrow=125, ncol=125) y[lower.tri(y)] <- x yy<-as.dist(y) ##=============== list1<-list() for(i in 1:ncol(m)){ list1[[i]]<-t(apply(m,1,function(x) x[i]-x)) list1} x<-list1 x<-matrix(unlist(x),ncol=15625) x<-abs(x) y<-colSums(x, na.rm=FALSE) z<-matrix(y, ncol=125) zz<-as.dist(z) x<-apply(m, 2, max) xx<-dist(x) xx<-as.dist(xx) xx[yy==0]<-0 ff<-((zz))+((yy))+((xx)) r<-matrix(sort(as.matrix(ff)[125,],index.return=TRUE)$ix,ncol=1) u<-r[c(2,3,4,5,6,7,8),1] mata<-m[,c(u)]##(shifted) amata<-apply(mata,1,mean) amata<-data.frame(amata) aavg<-as.matrix(amata, ncol=1) b<-aavg sss<-(max(b)+max(amata))/2 b[which(b == max(b))]<-sss library(hydroGOF) >>>>>RRR<-rmse(b,matrix(m[,61],ncol=1)) >>>>>UUU<-NSE(b,matrix(m[,61],ncol=1)) >>>>>cc<-sum(abs(b-m[,61])) ______________________________________________ R-help@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.