Hi Wolfgang,

Apologies for not previously linking to the mailing list.

I believe the below code gets me what I am in need of.

    res <- outer(Species, Species, "==") # logical matrix where
off-diagonal elements are all FALSE
    is.na(no_outliers_dist_matrix) <- res # set all intraspecific distances
to NA, leaving only interspecific values

As a result, no_outliers_dist_matrix now contains only interspecific
distances.

Note, no_outliers_dist_matrix is lower triangular since I first ran the code

 dists[upper.tri(dists, diag = FALSE)] <- NA # replace upper triangle with
NA and then subset to get lower triangular matrix


Thanks.

Cheers,

Jarrett


On Sun, Feb 5, 2023 at 12:50 PM Viechtbauer, Wolfgang (NP) <
wolfgang.viechtba...@maastrichtuniversity.nl> wrote:

> Please also reply to the list, not just to me.
>
> Unfortunately, I still don't get it. Can you show what you want the
> *final* matrix to look like for this specific example?
>
> Best,
> Wolfgang
>
> >-----Original Message-----
> >From: Jarrett Phillips [mailto:phillipsjarre...@gmail.com]
> >Sent: Sunday, 05 February, 2023 18:30
> >To: Viechtbauer, Wolfgang (NP)
> >Subject: Re: [R-sig-phylo] Generating a matrix of interspecfic genetic
> distances
> >
> >Thanks Wolfgang,
> >
> >‘dists’ contains both intraspecific and interspecific comparisons. The
> ‘inter’
> >variable extracts interspecific values from ‘dists’, but returns a vector
> instead
> >of a matrix.
> >
> >I’m wondering how (if it is possible) I can return ‘inter’ as a matrix.
> The
> >result likely will not be a square matrix, which is okay.
> >
> >As mentioned in my previous email, as.matrix(inter) simply returns a
> matrix with
> >a single column, so destroys the block structure of matrices, and also
> drops
> >relevant row and column names found in ‘dists’.
> >
> >‘res’ is used to return all elements of ‘dists’ except the main diagonal.
> >
> >If things are still unclear, please let me know.
> >
> >Cheers,
> >
> >Jarrett
> >
> >On Sun, Feb 5, 2023 at 6:10 AM Viechtbauer, Wolfgang (NP)
> ><wolfgang.viechtba...@maastrichtuniversity.nl> wrote:
> >Dear Jarrett,
> >
> >I am not sure what it is that you are trying to accomplish with the last
> two
> >lines. Isn't 'dists' already what you want? If you just want to set the
> diagonal
> >of 'dists' to NA, then 'diag(dists) <- NA' would do that. But maybe I am
> missing
> >the point here entirely.
> >
> >Best,
> >Wolfgang
> >
> >>-----Original Message-----
> >>From: R-sig-phylo [mailto:r-sig-phylo-boun...@r-project.org] On Behalf
> Of
> >Jarrett
> >>Phillips
> >>Sent: Sunday, 05 February, 2023 8:31
> >>To: r-sig-phylo@r-project.org
> >>Subject: [R-sig-phylo] Generating a matrix of interspecfic genetic
> distances
> >>
> >>Hi All,
> >>
> >>I am using the ape R package to extract interspecific distances from a
> >>pairwise distance matrix.
> >>
> >>Consider the woodmouse example.
> >>
> >>    library(ape)
> >>
> >>    data(woodmouse)
> >>
> >>    dists <- dist.dna(woodmouse, model = "raw", as.matrix = TRUE)
> >>    isSymmetric(dists) # TRUE
> >>    dists[upper.tri(dists, diag = FALSE)] <- NA # replace upper triangle
> >>with NA and then subset to get lower triangular matrix
> >>    isSymmetric(dists) # FALSE
> >>    dists # this is a matrix
> >>
> >>    labs <- labels(woodmouse) # get species names
> >>
> >>    res <- outer(labs, labs, "==") # get cases where matrix elements are
> >>equal
> >>    inter <- na.omit(dists[!res]) # get interspecific distances by taking
> >>elements that are not equal
> >>
> >>The problem I am facing is that I need 'inter' to be a matrix instead of
> a
> >>vector, so that I can tell which distances belong to which pairs of
> >>specimens. The 'inter' matrix should have the same row and column names
> as
> >>the 'dists' variable. Simply doing
> >>
> >>    as.matrix(inter)
> >>
> >>will not suffice in this case since row names and column names are not
> >>preserved.
> >>
> >>Once I have a matrix of only interspecific distances, I can then find
> >>nearest neighbours for all species in my dataset and continue from there.
> >>
> >>I feel it is an easy solution, but something is just not clicking.
> >>
> >>Any ideas?
> >>
> >>Please let me know if anything is unclear.
> >>
> >>Thanks.
> >>
> >>Cheers,
> >>
> >>Jarrett
>

        [[alternative HTML version deleted]]

_______________________________________________
R-sig-phylo mailing list - R-sig-phylo@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-phylo
Searchable archive at http://www.mail-archive.com/r-sig-phylo@r-project.org/

Reply via email to