On Fri, Apr 6, 2012 at 4:02 PM, Dimitri Liakhovitski <dimitri.liakhovit...@gmail.com> wrote: This works great:
Really ? surprising given it is the EXACT same for-loop as in your original problem with counter "i" replaced by "k" and reorder to matrix[!100]<- 0 instead of matrix(0)[i]<- 100 You didn't even attempt to implement Carl's suggestion to use apply family for looping (which I still think is completely unnecessary). The only logical conclusion is N=nrow(input) was not large enough to pose a problem in the first place. In the future please use some brain power before waisting ours. Cheers > > input<-as.matrix(data.frame(a=c(5,1,3,7),b=c(2,6,4,8))) > result<-input > N<-nrow(input) > for (k in 1:N){ > foo <- which (input == k,arr.ind=T) > result[k,foo[2]] <-100 > } > result[result !=100]<-0 > > Dimitri > > > On Fri, Apr 6, 2012 at 5:14 PM, Carl Witthoft <c...@witthoft.com> wrote: >> I think the OP wants to fill values in an arbitrarily large matrix. Now, >> first of all, I'd like to know what his real problem is, since this seems >> like a very tedious and unproductive matrix to produce. But in the >> meantime, since he also left out important information, let's assume the >> input matrix is N rows by M columns, and that he wants therefore to end up >> with N instances of "100", not counting the original value of 100 that is >> one of his ranking values (a bad BAD move IMHO). >> >> Then either loop or lapply over an equation like (I've expanded things more >> than necessary for clarity >> result<-inmatrix >> for (k in 1:N){ >> foo <- which (inmatrix == k,arr.ind=T) >> result[k,foo[2]] <-100 >> >> } >> >> >> >> I maybe missing something but this seems like an indexing problem >> which doesn't require a loop at all. Something like this maybe? >> >> (input<-matrix(c(5,1,3,7,2,6,4,8),nc=2)) >> output <- matrix(0,max(input),2) >> output[input[,1],1] <- 100 >> output[input[,2],2] <- 100 >> output >> >> Cheers >> >> >> On Fri, Apr 6, 2012 at 1:49 PM, Dimitri Liakhovitski >> <dimitri.liakhovitski at gmail.com> wrote: >>> Hello, everybody! >>> >>> I have a matrix "input" (see example below) - with all unique entries >>> that are actually unique ranks (i.e., start with 1, no ties). >>> I want to assign a value of 100 to the first row of the column that >>> contains the minimum (i.e., value of 1). >>> Then, I want to assign a value of 100 to the second row of the column >>> that contains the value of 2, etc. >>> The results I am looking for are in "desired.results". >>> My code (below) does what I need. But it's using a loop through all >>> the rows of my matrix and searches for a matrix element every time. >>> My actual matrix is very large. Is there a way to do it more efficiently? >>> Thank you very much for the tips! >>> Dimitri >>> >>> input<-as.matrix(data.frame(a=c(5,1,3,7),b=c(2,6,4,8))) >>> (input) >>> desired.result<-as.matrix(data.frame(a=c(100,0,100,0),b=c(0,100,0,100))) >>> (desired.result) >>> result<-as.matrix(data.frame(a=c(0,0,0,0),b=c(0,0,0,0))) >>> for(i in 1:nrow(input)){ # i<-1 >>> mymin<-i >>> mycoords<-which(input==mymin,arr.ind=TRUE) >>> result[i,mycoords[2]]<-100 >>> input[mycoords]<-max(input) >>> } >>> (result) >>> >> -- >> >> Sent from my Cray XK6 >> "Quidvis recte factum, quamvis humile, praeclarum." >> >> >> ______________________________________________ >> 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. > > > > -- > Dimitri Liakhovitski > marketfusionanalytics.com > > ______________________________________________ > 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. ______________________________________________ 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.