R: Conversion Among Tree and Network Objects

as.phylo {ape} | R Documentation

## Conversion Among Tree and Network Objects

### Description

`as.phylo` is a generic function which converts an object into a tree of class `"phylo"`. There are currently two methods for objects of class `"hclust"` and of class `"phylog"` (implemented in the package ade4). The default method is for any object inheriting the class `"phylo"` which is returned unchanged.

`as.hclust.phylo` is a method of the generic `as.hclust` which converts an object of class `"phylo"` into one of class `"hclust"`. This can used to convert an object of class `"phylo"` into one of class `"dendrogram"` (see examples).

`as.network` and `as.igraph` convert trees of class `"phylo"` into these respective classes defined in the packages of the same names (where the generics are defined).

`old2new.phylo` and `new2old.phylo` are utility functions for converting between the old and new coding of the class `"phylo"`.

### Usage

    as.phylo(x, ...)
    ## Default S3 method:
    as.phylo(x, ...)
    ## S3 method for class 'hclust'
    as.phylo(x, ...)
    ## S3 method for class 'phylog'
    as.phylo(x, ...)
    ## S3 method for class 'phylo'
    as.hclust(x, ...)
    old2new.phylo(phy)
    new2old.phylo(phy)
    ## S3 method for class 'phylo'
    as.network(x, directed = is.rooted(x), ...)
    ## S3 method for class 'phylo'
    as.igraph(x, directed = is.rooted(x), use.labels = TRUE, ...)

### Arguments

`x` | an object to be converted into another class.
`directed` | a logical value: should the network be directed? By default, this depends on whether the tree is rooted or not.
`use.labels` | a logical specifying whether to use labels to build the network of class `"igraph"`. If `TRUE` and the tree has no node labels, then some default labels are created first. If `FALSE`, the network is built with integers.
`...` | further arguments to be passed to or from other methods.
`phy` | an object of class `"phylo"`.

### Value

An object of class `"hclust"`, `"phylo"`, `"network"`, or `"igraph"`.

### Note

In an object of class `"hclust"`, the `height` gives the distance between the two sets that are being agglomerated. So these distances are divided by two when setting the branch lengths of a phylogenetic tree.

### Author(s)

Emmanuel Paradis

### See Also

`hclust`, `as.hclust`, `dendrogram`, `as.phylo.formula`

### Examples

    data(bird.orders)
    hc <- as.hclust(bird.orders)
    tr <- as.phylo(hc)
    all.equal(bird.orders, tr) # TRUE

    ### shows the three plots for tree objects:
    dend <- as.dendrogram(hc)
    layout(matrix(c(1:3, 3), 2, 2))
    plot(bird.orders, font = 1)
    plot(hc)
    par(mar = c(8, 0, 0, 0)) # leave space for the labels
    plot(dend)

    ### how to get identical plots with
    ### plot.phylo and plot.dendrogram:
    layout(matrix(1:2, 2, 1))
    plot(bird.orders, font = 1, no.margin = TRUE, label.offset = 0.4)
    par(mar = c(0, 0, 0, 8))
    plot(dend, horiz = TRUE)
    layout(1)

    ## Not run:
    ### convert into networks:
    if (require(network)) {
        x <- as.network(rtree(10))
        print(x)
        plot(x, vertex.cex = 1:4)
        plot(x, displaylabels = TRUE)
    }
    tr <- rtree(5)
    if (require(igraph)) {
        print((x <- as.igraph(tr)))
        plot(x)
        print(as.igraph(tr, TRUE, FALSE))
        print(as.igraph(tr, FALSE, FALSE))
    }

    ## End(Not run)

[Package ape version 5.6 Index]