David, Thanks! You just gave me the answer. All I had to do was:
xx<-c() for (i in c('100', '75', '50') ) { x<-homerange[[1]]$polygons[[i]] ; xx<-rbind(x,xx) } xx I didn't know you could use characters as index values in a for loop, or that you could use characters in double brackets instead of using the $ symbol. homerange[[1]]$polygons[['100']] is the same as homerange[[1]]$polygons$'100 The list is actually the output of the NNCH function in Adehabitat. I thought about changing the function first, but looked at the code and couldn't figure it out. I knew there had to be an easier way. I greatly appreciate all your help, Tim Tim Clark Department of Zoology University of Hawaii --- On Sat, 10/3/09, David Winsemius <dwinsem...@comcast.net> wrote: > From: David Winsemius <dwinsem...@comcast.net> > Subject: Re: [R] Paste a character to an object > To: "Tim Clark" <mudiver1...@yahoo.com> > Cc: r-help@r-project.org > Date: Saturday, October 3, 2009, 5:43 PM > > On Oct 3, 2009, at 11:14 PM, Tim Clark wrote: > > > David, > > > > Thanks, that helps me in making an example of what I > am trying to do. Given the following example, I would > like to run through a for loop and obtain a vector of the > data only for the 100, 75, and 50 percent values. Is > there a way to get this to work, either using paste as in > the example below or some other method? > > > > homerange <- list() > > homerange[[1]] <- "test" > > homerange[[1]]$polygons <- "test2" > > homerange[[1]]$polygons$`100` <- rnorm(20,10,1) > > homerange[[1]]$polygons$`90` <- rnorm(20,10,1) > > homerange[[1]]$polygons$`75` <- rnorm(20,10,1) > > homerange[[1]]$polygons$`50` <- rnorm(20,10,1) > > > > xx<-c() > > percent<-c("100","75","50") > > for (i in 1:length(percent)) > > { > > x<-paste(homerange[[1]]$polygons$ > , percent[i]) #This does not work!!! > > > ^?^ > And why _would_ you expect an expression ending in a "$" to > be acceptable to the parser? You did not put quotes around > it so the interpreter tried to evaluate it. > > You are probably looking for the capabilities of the > functions get and assign which take string variable and > either get the object named by a sstring or assign a vlaue > to an object so named. > > But why are you intent in causing yourself all this > pain? (Not to mention asking questions I cannot > answer.) Working with expressions involving backquotes > is a recipe for hair-pulling and frustration for us normal > mortals. Why not call your lists "p100", "p90", "p75", > "p50"? Then everything is simple: > > > xx<-c() > > percent<-c(100, 75, 50) > > for (i in c("p100", "p75", "p50") ) > + { > + x<-homerange[[1]]$polygons[[i]] ; > xx<-rbind(x,xx) # could have simplified this > + } > > xx > [,1] > [,2] [,3] > [,4] [,5] > [,6] [,7] > [,8] [,9] > x 9.660935 10.46526 10.75813 8.866064 > 9.967950 9.987941 10.757160 10.180826 9.992162 > x 11.674645 10.51753 10.88061 10.515120 9.440838 11.460845 > 12.033612 9.318392 9.592026 > x 10.057021 10.14339 10.29757 9.164233 8.977280 > 9.733971 9.965002 9.693649 9.430043 > [,10] > [,11] [,12] > [,13] [,14] > [,15] [,16] > [,17] [,18] > x 11.78904 9.437353 11.910747 10.996167 > 11.631264 9.386944 9.602160 10.498921 > 9.09349 > x 9.11036 9.546378 11.030323 > 9.715164 9.500268 11.762440 9.101104 > 9.610251 10.56210 > x 9.62574 12.738020 9.146863 10.497626 > 10.485520 11.644503 10.303581 11.340263 11.34873 > [,19] [,20] > x 10.146955 9.640136 > x 9.334912 10.101603 > x 8.710609 11.265633 > > > > > > > > > > The x<-paste(...) in this function does not work, > and that is what I am stuck on. The result should be a > vector the values for the "100","75",and "50" levels, but > not the "90" level. > > > > Aloha, > > > > Tim Clark > > Department of Zoology > > University of Hawaii > > > > > > --- On Sat, 10/3/09, David Winsemius <dwinsem...@comcast.net> > wrote: > > > >> From: David Winsemius <dwinsem...@comcast.net> > >> Subject: Re: [R] Paste a character to an object > >> To: "Tim Clark" <mudiver1...@yahoo.com> > >> Cc: r-help@r-project.org > >> Date: Saturday, October 3, 2009, 4:45 PM > >> > >> On Oct 3, 2009, at 10:26 PM, Tim Clark wrote: > >> > >>> Dear List, > >>> > >>> I can't seem to get a simple paste function to > work > >> like I need. I have an object I need to call > but it > >> ends in a character string. The object is a > list of > >> home range values for a range of percent > isopleths. I > >> need to loop through a vector of percent values, > so I need > >> to paste the percent as a character on the end of > the object > >> variable. I have no idea why the percent is > in > >> character form, and I can't use a simple index > value > >> (homerange[[1]]$polygons[100]) because there are a > variable > >> number of isopleths that are calculated and [100] > will not > >> always correspond to "100". So I am stuck. > >>> > >>> What I want is: > >>> > >>> homerange[[1]]$polygons$"100" > >>> > >>> What I need is something like the following, > but that > >> works: > >>> > >>> percent<-c("100","75","50") > >>> p=1 > >>> > paste(homerange[[1]]$polygons$,percent[p],sep="") > >> > >> Not a reproducible example, but here is some code > that > >> shows that it is possible to construct names that > would > >> otherwise be invalid due to having numerals as a > first > >> character by using back-quotes: > >> > >>> percent<-c("100","75","50") > >>> p=1 > >>> > paste(homerange[[1]]$polygons$,percent[p],sep="") > >> Error: syntax error > >>> homerange <- list() > >>> homerange[[1]] <- "test" > >>> homerange[[1]]$polygons <- "test2" > >> Warning message: > >> In homerange[[1]]$polygons <- "test2" : > Coercing LHS to > >> a list > >>> homerange > >> [[1]] > >> [[1]][[1]] > >> [1] "test" > >> > >> [[1]]$polygons > >> [1] "test2" > >> > >> > >>> homerange[[1]]$polygons$`100` <- > percent[1] > >> Warning message: > >> In homerange[[1]]$polygons$`100` <- percent[1] > : > >> Coercing LHS to a list > >>> homerange[[1]]$polygons$`100` > >> [1] "100" > >> > >> --David Winsemius > >> > >> > >>> > >>> Thanks for the help, > >>> > >>> Tim > >>> > >>> > >>> > >>> Tim Clark > >>> Department of Zoology > >>> University of Hawaii > >>> > >>> > ______________________________________________ > >>> 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 > Heritage Laboratories > West Hartford, CT > > ______________________________________________ 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.