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.

Reply via email to