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.

Reply via email to