Erik and others, Many thanks for your assistance. Erik correctly points out that the as.dist() coercion requires a different format than I was using. The correct format for input to as.dist() is a square matrix, not a lower triangle matrix. Once I had that in order, everything went much better.
I had been attempting to coerce a vector of output from lowertri() directly to an object of class "dist." Instead, what I needed to do was generate a zero matrix and replace the lower triangle of entries with the output from lowertri(). In particular, thanks to Henrique Dallazuanna and Phil Spector. Ben Erik Iverson wrote: > Ben, > > In general, when you define a, b, and c as below, the c() wrapper is not > needed, since the : operator returns a vector anyway. Also, best not to name > variables 'c' to avoid confusion with the function you're using. > > Regarding your actual question, lapply(list(a, b, c), "class<-", "dist") > might work, but your objects in your example don't seem to be able to be > coerced to dist objects. E.g., as.dist(b) gives an error. If you have data > that can actually work as dist objects, you might try the above line though. > > Erik > > >> -----Original Message----- >> From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org] >> On Behalf Of Ben Mazzotta >> Sent: Monday, November 23, 2009 4:51 PM >> To: r-help@r-project.org >> Subject: [R] how to change the class of a group of objects >> >> Dear R users, >> >> I would like to change the class of a group of objects in R memory from >> "numeric" to "dist". I can manipulate the class using >> >> class(foo) <- bar >> >> but I cannot get the same command to work on groups of variables. When I >> use for() loops and lists of names, inevitably I have to specify >> >> class(get("foo")) <- bar >> >> which causes class() to return an error. Could anyone offer some advice >> how to manipulate classes and attributes of a list of objects in memory? >> >> Many thanks, >> Ben >> >> >> >> >> a <- c(1:5) >> b <- c(1:10) >> c <- c(1:20) >> >> # What I would like to do is coerce all of these to class "dist". >> # How can I write a command that changes the class of a, b, AND c to >> "dist"? >> # Most of my answers include a list or a for() loop over (a, b, c) >> # How can I write a command that changes attributes of a, b, and c all >> at the same time? >> # I can force the process to work for a few objects, but it is >> time-consuming. >> # For reference, I am including the following commands. >> >> class(a) >> class(get(letters[1])) >> class(a) <- "dist" >> class(a) <- NULL >> class(a) >> class(get(letters[1])) <- "dist" >> >> >> -- >> Ben Mazzotta >> PhD Candidate >> Fletcher School, Tufts University >> >> ______________________________________________ >> 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.