Thanks, that worked like a charm. Daisy
On Wed, Jun 29, 2011 at 11:47 AM, David Winsemius <dwinsem...@comcast.net> wrote: > > On Jun 28, 2011, at 9:18 PM, Daisy Englert Duursma wrote: > >> Hello, >> >> I think this is a simple problem but I am not coming up with a simple >> solution. I think it just an indexing problem. >> >> I can easily replace values in a matrix from a dataframe when the >> dataframe has row and column numbers. In the example below I use row >> and column names and I can not get it to work >> >> #make a matrix where rows and columns are the lat and long for a >> bounding box of Australia and all elements have the value of -9990 >> >> bb<-matrix(c(rep(-9999,691*886)),nrow=691 >> ,ncol >> =886,dimnames=list(seq(-10,-44.50,by=-0.05),seq(112,156.25,by=0.05))) >> >> #dfr with row names and col names and values to be replaced in the matrix >> >> dfr <- data.frame(cbind(x=seq(120,125,by=0.05), y=-25, var.1=1)) >> >> #insert the values from the dfr into the matrix >> bb[dfr$x,dfr$y]<-d$var.1 > > Indexing with a two column matrix is possible, but those vectors are not > legitimate indices even if you bundle them into a two column matrix. > (dfr$y's are all -25, so at least the error report is informative). > > These will return indices: > sapply(as.character(dfr$y), function(x) which(x== dimnames(bb)[[1]])) > sapply(as.character(dfr$x), function(x) which(x== dimnames(bb)[[2]])) > > So try: >> #insert the values from the dfr into the matrix >> bb[matrix(c(sapply(as.character(dfr$y), function(x) which(x== >> dimnames(bb)[[1]])), sapply(as.character(dfr$x), function(x) which(x== >> dimnames(bb)[[2]]))), ncol=2)] <- dfr[["var.1"]] > > >> >> Thanks for your help, >> Daisy >> >> ______________________________________________ >> 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. > > David Winsemius, MD > West Hartford, CT > > -- Daisy Englert Duursma Department of Biological Sciences Room E8C156 Macquarie University, North Ryde, NSW 2109 Australia Tel +61 2 9850 9256 ______________________________________________ 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.