Description Usage Arguments Details Value Methods Author(s) Examples

Methods for creating subsets of phylogenies, based on pruning a tree to include or exclude a set of terminal taxa, to include all descendants of the MRCA of multiple taxa, or to return a subtree rooted at a given node.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | ```
subset(x, ...)
## S4 method for signature 'phylo4'
subset(
x,
tips.include = NULL,
tips.exclude = NULL,
mrca = NULL,
node.subtree = NULL,
...
)
`[`(x, i, j, ..., drop = TRUE)
## S4 method for signature 'phylo4,character,missing,missing'
x[i, j, ..., drop = TRUE]
## S4 method for signature 'phylo4,numeric,missing,missing'
x[i, j, ..., drop = TRUE]
## S4 method for signature 'phylo4,logical,missing,missing'
x[i, j, ..., drop = TRUE]
## S4 method for signature 'phylo4,missing,missing,missing'
x[i, j, ..., drop = TRUE]
## S4 method for signature 'phylo4d,ANY,character,missing'
x[i, j, ..., drop = TRUE]
## S4 method for signature 'phylo4d,ANY,numeric,missing'
x[i, j, ..., drop = TRUE]
## S4 method for signature 'phylo4d,ANY,logical,missing'
x[i, j, ..., drop = TRUE]
## S4 method for signature 'phylo4,ANY,ANY,ANY'
x[i, j, ..., drop = TRUE]
prune(x, ...)
## S4 method for signature 'phylo4'
prune(x, tips.exclude, trim.internal = TRUE)
## S4 method for signature 'phylo4d'
prune(x, tips.exclude, trim.internal = TRUE)
``` |

`x` |
an object of class |

`...` |
optional additional parameters (not in use) |

`tips.include` |
A vector of tips to include in the subset tree |

`tips.exclude` |
A vector of tips to exclude from the subset tree |

`mrca` |
A vector of nodes for determining the most recent common ancestor, which is then used as the root of the subset tree |

`node.subtree` |
A single internal node specifying the root of the subset tree |

`i` |
( |

`j` |
( |

`drop` |
(not in use: for compatibility with the generic method) |

`trim.internal` |
A logical specifying whether to remove internal nodes that no longer have tip descendants in the subset tree |

The `subset`

methods must be called using no more than one of
the four main subsetting criteria arguments (`tips.include`

,
`tips.exclude`

, `mrca`

, or `node.subtree`

). Each
of these arguments can be either character or numeric. In the
first case, they are treated as node labels; in the second case,
they are treated as node numbers. For the first two arguments,
any supplied tips not found in the tree (`tipLabels(x)`

) will
be ignored, with a warning. Similarly, for the `mrca`

argument, any supplied tips or internal nodes not found in the
tree will be ignored, with a warning. For the `node.subtree`

argument, failure to provide a single, valid internal node will
result in an error.

Although `prune`

is mainly intended as the workhorse function
called by `subset`

, it may also be called directly. In
general it should be equivalent to the `tips.exclude`

form of
`subset`

(although perhaps with less up-front error
checking).

The "[" operator, when used as `x[i]`

, is similar to the
`tips.include`

form of `subset`

. However, the indices
used with this operator can also be logical, in which case the
corresponding tips are assumed to be ordered as in ```
nodeId(x,
"tip")
```

, and recycling rules will apply (just like with a vector
or a matrix). With a phylo4d object 'x',
`x[i,j]`

creates a subset of `x`

taking `i`

for a
tip index and `j`

for the index of data variables in
`tdata(geospiza, "all")`

. Note that the second index is
optional: `x[i, TRUE]`

, `x[i,]`

, and `x[i]`

are all
equivalent.

Regardless of which approach to subsetting is used, the argument values must be such that at least two tips are retained.

If the most recent common ancestor of the retained tips is not the original root node, then the root node of the subset tree will be a descendant of the original root. For rooted trees with non-NA root edge length, this has implications for the new root edge length. In particular, the new length will be the summed edge length from the new root node back to the original root (including the original root edge). As an alternative, see the examples for a way to determine the length of the edge that was immediately ancestral to the new root node in the original tree.

Note that the correspondance between nodes and labels (and data in the case of phylo4d) will be retained after all forms of subsetting. Beware, however, that the node numbers (IDs) will likely be altered to reflect the new tree topology, and therefore cannot be compared directly between the original tree and the subset tree.

an object of class `"phylo4"`

or `"phylo4d"`

- x = "phylo4"
subset tree

- x = "phylo4d"
subset tree and corresponding node and tip data

Jim Regetz regetz@nceas.ucsb.edu

Steven Kembel
skembel@berkeley.edu

Damien de Vienne
damien.de-vienne@u-psud.fr

Thibaut Jombart
jombart@biomserv.univ-lyon1.fr

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | ```
data(geospiza)
nodeLabels(geospiza) <- paste("N", nodeId(geospiza, "internal"), sep="")
geotree <- extractTree(geospiza)
## "subset" examples
tips <- c("difficilis", "fortis", "fuliginosa", "fusca", "olivacea",
"pallida", "parvulus", "scandens")
plot(subset(geotree, tips.include=tips))
plot(subset(geotree, tips.include=tips, trim.internal=FALSE))
plot(subset(geotree, tips.exclude="scandens"))
plot(subset(geotree, mrca=c("scandens","fortis","pauper")))
plot(subset(geotree, node.subtree=18))
## "prune" examples (equivalent to subset using tips.exclude)
plot(prune(geotree, tips))
## "[" examples (equivalent to subset using tips.include)
plot(geotree[c(1:6,14)])
plot(geospiza[c(1:6,14)])
## for phylo4d, subset both tips and data columns
geospiza[c(1:6,14), c("wingL", "beakD")]
## note handling of root edge length:
edgeLength(geotree)['0-15'] <- 0.1
geotree2 <- geotree[1:2]
## in subset tree, edge of new root extends back to the original root
edgeLength(geotree2)['0-3']
## edge length immediately ancestral to this node in the original tree
edgeLength(geotree, MRCA(geotree, tipLabels(geotree2)))
``` |

```
label node ancestor edge.length node.type wingL beakD
1 fuliginosa 1 13 0.05500 tip 4.132957 1.941157
2 fortis 2 13 0.05500 tip 4.244008 2.362658
3 magnirostris 3 12 0.11000 tip 4.404200 2.823767
4 conirostris 4 11 0.18333 tip 4.349867 2.513800
5 scandens 5 10 0.19250 tip 4.261222 2.144700
6 difficilis 6 9 0.22800 tip 4.224067 2.011100
7 olivacea 7 8 0.88077 tip NA NA
8 N15 8 0 NA root NA NA
9 N20 9 8 0.65277 internal NA NA
10 N21 10 9 0.03550 internal NA NA
11 N22 11 10 0.00917 internal NA NA
12 N23 12 11 0.07333 internal NA NA
13 N24 13 12 0.05500 internal NA NA
0-3
0.92577
23-24
0.055
```

Embedding an R snippet on your website

Add the following code to your website.

For more information on customizing the embed code, read Embedding Snippets.