Getting Started With The treedata.table Package

The aim of the treedata.table R package is to allow researchers to access and manipulate phylogenetic data using tools from the data.table package. data.table has many functions for rapidly manipulating data in a memory efficient way.

Using the treedata.table package begins with creating a treedata.table object. The treedata.table matches the tip.labels of the phylogeny to a column of names in your data.frame. This allows you to manipulate the data, and the corresponding tree together.

Importantly, the character matrix must must include a column with the taxa names and should be of class data.frame. The tree must be of class phylo or multiPhylo.

A treedata.table is created using the as.treedata.table function. Here we use the Anolis dataset from treeplyr. Traits in this dataset were randomly generated for a set of 100 species.

##          Thank you for using the {treedata.table} R package!   
## 
##                         🙂Happy coding!!🙂
# Load example data
data(anolis)
#Create treedata.table object with as.treedata.table
td <- as.treedata.table(tree = anolis$phy, data = anolis$dat)
## Tip labels detected in column: X
## Phylo object detected
## All tips from original tree/dataset were preserved

We may inspect our object by calling it by name. You will notice that your data.frame is now a data.table. A data.table is simply an advanced version of a data.frame that, among other, increase speed in data manipulation steps while simplifying syntax.

td
## $phy 
## 
## Phylogenetic tree with 100 tips and 99 internal nodes.
## 
## Tip labels:
##   ahli, allogus, rubribarbus, imias, sagrei, bremeri, ...
## 
## Rooted; includes branch lengths.
## 
## $dat 
##      tip.label      SVL PCI_limbs PCII_head PCIII_padwidth_vs_tail
## 1:        ahli 4.039125 -3.248286 0.3722519             -1.0422187
## 2:     allogus 4.040138 -2.845570 0.6001134             -1.0253056
## 3: rubribarbus 4.078469 -2.238349 1.1199779             -1.1929572
## 4:       imias 4.099687 -3.048917 2.3320349              0.1616442
## 5:      sagrei 4.067162 -1.741055 2.0228243              0.1693635
## 6:     bremeri 4.113371 -1.813611 2.6067501              0.6399320
##    PCIV_lamella_num awesomeness  hostility   attitude ecomorph island
## 1:        -2.414742  -0.2416517 -0.1734769  0.6443771       TG   Cuba
## 2:        -2.463311   0.6244689 -0.5000962  0.7128910       TG   Cuba
## 3:        -2.087433  -0.4277574  0.4800445 -0.9674263       TG   Cuba
## 4:        -2.112606   0.1694260 -0.4108123  0.1963580       TG   Cuba
## 5:        -1.375769  -0.6304338  0.7193130 -1.2228276       TG   Cuba
## 6:        -1.626299  -1.7543006  1.4127184  0.1832345       TG   Cuba

Furthermore, the new data.table has been reordered into the same order as the tip.labels of your tree.

td$phy$tip.label == td$dat$tip.label
##   [1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
##  [16] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
##  [31] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
##  [46] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
##  [61] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
##  [76] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
##  [91] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE

Manipulating Data

Coindexing

Your data table can be indexed in the same way any other data.table object would be. For example, if we wanted to look at our snout-vent length column, we can do that like so.

td$dat[,'SVL']
##           SVL
##   1: 4.039125
##   2: 4.040138
##   3: 4.078469
##   4: 4.099687
##   5: 4.067162
##   6: 4.113371
##   7: 3.901619
##   8: 3.637962
##   9: 3.987147
##  10: 3.952605
##  11: 4.032806
##  12: 3.938442
##  13: 3.877457
##  14: 4.769473
##  15: 3.838376
##  16: 4.154274
##  17: 4.321524
##  18: 4.128612
##  19: 4.482607
##  20: 4.165605
##  21: 3.869881
##  22: 3.886500
##  23: 3.799022
##  24: 4.188105
##  25: 3.820378
##  26: 4.091535
##  27: 4.189820
##  28: 3.874155
##  29: 3.911743
##  30: 3.831810
##  31: 3.916546
##  32: 3.928796
##  33: 3.663932
##  34: 3.588941
##  35: 3.696631
##  36: 3.793899
##  37: 3.657991
##  38: 4.288780
##  39: 3.800471
##  40: 4.097479
##  41: 4.316542
##  42: 4.051111
##  43: 4.121684
##  44: 4.210982
##  45: 3.983003
##  46: 4.242103
##  47: 4.274271
##  48: 4.079485
##  49: 5.053056
##  50: 5.076958
##  51: 5.013963
##  52: 4.128504
##  53: 3.884652
##  54: 4.875012
##  55: 5.003946
##  56: 5.038034
##  57: 5.042349
##  58: 5.036953
##  59: 3.842994
##  60: 3.845670
##  61: 3.657088
##  62: 4.375390
##  63: 4.258991
##  64: 3.757869
##  65: 3.697941
##  66: 3.466860
##  67: 3.701240
##  68: 3.763884
##  69: 3.773967
##  70: 3.682924
##  71: 3.815705
##  72: 3.788595
##  73: 3.802961
##  74: 3.554891
##  75: 3.537439
##  76: 3.758726
##  77: 3.462014
##  78: 3.630161
##  79: 3.526655
##  80: 3.715765
##  81: 3.626206
##  82: 3.971307
##  83: 4.198915
##  84: 4.280547
##  85: 4.802849
##  86: 5.042780
##  87: 5.083473
##  88: 5.035096
##  89: 5.101085
##  90: 5.113994
##  91: 3.770613
##  92: 3.827445
##  93: 3.908550
##  94: 3.859835
##  95: 4.302036
##  96: 4.036557
##  97: 4.057997
##  98: 4.275448
##  99: 4.297965
## 100: 3.663049
##           SVL

You can also use double bracket syntax to directly return column data as a named list.

td[["SVL"]]
##            ahli         allogus     rubribarbus           imias          sagrei 
##        4.039125        4.040138        4.078469        4.099687        4.067162 
##         bremeri quadriocellifer      ophiolepis         mestrei           jubar 
##        4.113371        3.901619        3.637962        3.987147        3.952605 
##      homolechis        confusus           guafe         garmani        opalinus 
##        4.032806        3.938442        3.877457        4.769473        3.838376 
##         grahami     valencienni      lineatopus      reconditus       evermanni 
##        4.154274        4.321524        4.128612        4.482607        4.165605 
##       stratulus           krugi      pulchellus       gundlachi       poncensis 
##        3.869881        3.886500        3.799022        4.188105        3.820378 
##           cooki    cristatellus    brevirostris        caudalis          marron 
##        4.091535        4.189820        3.874155        3.911743        3.831810 
##        websteri       distichus        barbouri         alumina    semilineatus 
##        3.916546        3.928796        3.663932        3.588941        3.696631 
##         olssoni      etheridgei         fowleri       insolitus       whitemani 
##        3.793899        3.657991        4.288780        3.800471        4.097479 
##       haetianus        breslini         armouri         cybotes         shrevei 
##        4.316542        4.051111        4.121684        4.210982        3.983003 
##   longitibialis         strahmi        marcanoi        baleatus       barahonae 
##        4.242103        4.274271        4.079485        5.053056        5.076958 
##        ricordii   eugenegrahami     christophei         cuvieri        barbatus 
##        5.013963        4.128504        3.884652        4.875012        5.003946 
##          porcus  chamaeleonides       guamuhaya   altitudinalis        oporinus 
##        5.038034        5.042349        5.036953        3.842994        3.845670 
##        isolepis        allisoni        porcatus     argillaceus       centralis 
##        3.657088        4.375390        4.258991        3.757869        3.697941 
##         pumilis        loysiana         guazuma        placidus        sheplani 
##        3.466860        3.701240        3.763884        3.773967        3.682924 
##         alayoni     angusticeps        paternus       alutaceus    inexpectatus 
##        3.815705        3.788595        3.802961        3.554891        3.537439 
##       clivicola    cupeyalensis    cyanopleurus         alfaroi      macilentus 
##        3.758726        3.462014        3.630161        3.526655        3.715765 
##       vanidicus     argenteolus          lucius        bartschi    vermiculatus 
##        3.626206        3.971307        4.198915        4.280547        4.802849 
##        baracoae          noblei      smallwoodi    luteogularis       equestris 
##        5.042780        5.083473        5.035096        5.101085        5.113994 
##       monticola   bahorucoensis dolichocephalus      hendersoni     darlingtoni 
##        3.770613        3.827445        3.908550        3.859835        4.302036 
##        aliniger      singularis    chlorocyanus     coelestinus        occultus 
##        4.036557        4.057997        4.275448        4.297965        3.663049

The same functionality can also be accomplished through the extractVector function. Both the double bracket syntax and the extractVector function will return a named vector.

extractVector(td, 'SVL')
##            ahli         allogus     rubribarbus           imias          sagrei 
##        4.039125        4.040138        4.078469        4.099687        4.067162 
##         bremeri quadriocellifer      ophiolepis         mestrei           jubar 
##        4.113371        3.901619        3.637962        3.987147        3.952605 
##      homolechis        confusus           guafe         garmani        opalinus 
##        4.032806        3.938442        3.877457        4.769473        3.838376 
##         grahami     valencienni      lineatopus      reconditus       evermanni 
##        4.154274        4.321524        4.128612        4.482607        4.165605 
##       stratulus           krugi      pulchellus       gundlachi       poncensis 
##        3.869881        3.886500        3.799022        4.188105        3.820378 
##           cooki    cristatellus    brevirostris        caudalis          marron 
##        4.091535        4.189820        3.874155        3.911743        3.831810 
##        websteri       distichus        barbouri         alumina    semilineatus 
##        3.916546        3.928796        3.663932        3.588941        3.696631 
##         olssoni      etheridgei         fowleri       insolitus       whitemani 
##        3.793899        3.657991        4.288780        3.800471        4.097479 
##       haetianus        breslini         armouri         cybotes         shrevei 
##        4.316542        4.051111        4.121684        4.210982        3.983003 
##   longitibialis         strahmi        marcanoi        baleatus       barahonae 
##        4.242103        4.274271        4.079485        5.053056        5.076958 
##        ricordii   eugenegrahami     christophei         cuvieri        barbatus 
##        5.013963        4.128504        3.884652        4.875012        5.003946 
##          porcus  chamaeleonides       guamuhaya   altitudinalis        oporinus 
##        5.038034        5.042349        5.036953        3.842994        3.845670 
##        isolepis        allisoni        porcatus     argillaceus       centralis 
##        3.657088        4.375390        4.258991        3.757869        3.697941 
##         pumilis        loysiana         guazuma        placidus        sheplani 
##        3.466860        3.701240        3.763884        3.773967        3.682924 
##         alayoni     angusticeps        paternus       alutaceus    inexpectatus 
##        3.815705        3.788595        3.802961        3.554891        3.537439 
##       clivicola    cupeyalensis    cyanopleurus         alfaroi      macilentus 
##        3.758726        3.462014        3.630161        3.526655        3.715765 
##       vanidicus     argenteolus          lucius        bartschi    vermiculatus 
##        3.626206        3.971307        4.198915        4.280547        4.802849 
##        baracoae          noblei      smallwoodi    luteogularis       equestris 
##        5.042780        5.083473        5.035096        5.101085        5.113994 
##       monticola   bahorucoensis dolichocephalus      hendersoni     darlingtoni 
##        3.770613        3.827445        3.908550        3.859835        4.302036 
##        aliniger      singularis    chlorocyanus     coelestinus        occultus 
##        4.036557        4.057997        4.275448        4.297965        3.663049

Multiple traits can also be extracted using extractVector.

extractVector(td, 'SVL','ecomorph')
## $SVL
##            ahli         allogus     rubribarbus           imias          sagrei 
##        4.039125        4.040138        4.078469        4.099687        4.067162 
##         bremeri quadriocellifer      ophiolepis         mestrei           jubar 
##        4.113371        3.901619        3.637962        3.987147        3.952605 
##      homolechis        confusus           guafe         garmani        opalinus 
##        4.032806        3.938442        3.877457        4.769473        3.838376 
##         grahami     valencienni      lineatopus      reconditus       evermanni 
##        4.154274        4.321524        4.128612        4.482607        4.165605 
##       stratulus           krugi      pulchellus       gundlachi       poncensis 
##        3.869881        3.886500        3.799022        4.188105        3.820378 
##           cooki    cristatellus    brevirostris        caudalis          marron 
##        4.091535        4.189820        3.874155        3.911743        3.831810 
##        websteri       distichus        barbouri         alumina    semilineatus 
##        3.916546        3.928796        3.663932        3.588941        3.696631 
##         olssoni      etheridgei         fowleri       insolitus       whitemani 
##        3.793899        3.657991        4.288780        3.800471        4.097479 
##       haetianus        breslini         armouri         cybotes         shrevei 
##        4.316542        4.051111        4.121684        4.210982        3.983003 
##   longitibialis         strahmi        marcanoi        baleatus       barahonae 
##        4.242103        4.274271        4.079485        5.053056        5.076958 
##        ricordii   eugenegrahami     christophei         cuvieri        barbatus 
##        5.013963        4.128504        3.884652        4.875012        5.003946 
##          porcus  chamaeleonides       guamuhaya   altitudinalis        oporinus 
##        5.038034        5.042349        5.036953        3.842994        3.845670 
##        isolepis        allisoni        porcatus     argillaceus       centralis 
##        3.657088        4.375390        4.258991        3.757869        3.697941 
##         pumilis        loysiana         guazuma        placidus        sheplani 
##        3.466860        3.701240        3.763884        3.773967        3.682924 
##         alayoni     angusticeps        paternus       alutaceus    inexpectatus 
##        3.815705        3.788595        3.802961        3.554891        3.537439 
##       clivicola    cupeyalensis    cyanopleurus         alfaroi      macilentus 
##        3.758726        3.462014        3.630161        3.526655        3.715765 
##       vanidicus     argenteolus          lucius        bartschi    vermiculatus 
##        3.626206        3.971307        4.198915        4.280547        4.802849 
##        baracoae          noblei      smallwoodi    luteogularis       equestris 
##        5.042780        5.083473        5.035096        5.101085        5.113994 
##       monticola   bahorucoensis dolichocephalus      hendersoni     darlingtoni 
##        3.770613        3.827445        3.908550        3.859835        4.302036 
##        aliniger      singularis    chlorocyanus     coelestinus        occultus 
##        4.036557        4.057997        4.275448        4.297965        3.663049 
## 
## $ecomorph
##            ahli         allogus     rubribarbus           imias          sagrei 
##            "TG"            "TG"            "TG"            "TG"            "TG" 
##         bremeri quadriocellifer      ophiolepis         mestrei           jubar 
##            "TG"            "TG"            "GB"            "TG"            "TG" 
##      homolechis        confusus           guafe         garmani        opalinus 
##            "TG"            "TG"            "TG"            "CG"            "TC" 
##         grahami     valencienni      lineatopus      reconditus       evermanni 
##            "TC"            "TW"            "TG"             "U"            "TC" 
##       stratulus           krugi      pulchellus       gundlachi       poncensis 
##            "TC"            "GB"            "GB"            "TG"            "GB" 
##           cooki    cristatellus    brevirostris        caudalis          marron 
##            "TG"            "TG"             "T"             "T"             "T" 
##        websteri       distichus        barbouri         alumina    semilineatus 
##             "T"             "T"             "U"            "GB"            "GB" 
##         olssoni      etheridgei         fowleri       insolitus       whitemani 
##            "GB"             "U"             "U"            "TW"            "TG" 
##       haetianus        breslini         armouri         cybotes         shrevei 
##            "TG"            "TG"            "TG"            "TG"            "TG" 
##   longitibialis         strahmi        marcanoi        baleatus       barahonae 
##            "TG"            "TG"            "TG"            "CG"            "CG" 
##        ricordii   eugenegrahami     christophei         cuvieri        barbatus 
##            "CG"             "U"             "U"            "CG"             "U" 
##          porcus  chamaeleonides       guamuhaya   altitudinalis        oporinus 
##             "U"             "U"             "U"            "TC"            "TC" 
##        isolepis        allisoni        porcatus     argillaceus       centralis 
##            "TC"            "TC"            "TC"             "U"             "U" 
##         pumilis        loysiana         guazuma        placidus        sheplani 
##             "U"             "T"            "TW"            "TW"            "TW" 
##         alayoni     angusticeps        paternus       alutaceus    inexpectatus 
##            "TW"            "TW"            "TW"            "GB"            "GB" 
##       clivicola    cupeyalensis    cyanopleurus         alfaroi      macilentus 
##            "GB"            "GB"            "GB"            "GB"            "GB" 
##       vanidicus     argenteolus          lucius        bartschi    vermiculatus 
##            "GB"             "U"             "U"             "U"             "U" 
##        baracoae          noblei      smallwoodi    luteogularis       equestris 
##            "CG"            "CG"            "CG"            "CG"            "CG" 
##       monticola   bahorucoensis dolichocephalus      hendersoni     darlingtoni 
##             "U"            "GB"            "GB"            "GB"            "TW" 
##        aliniger      singularis    chlorocyanus     coelestinus        occultus 
##            "TC"            "TC"            "TC"            "TC"            "TW"

However, there’s a couple aspects that are unique to [[.treedata.table() and extractVector(). First, [[.treedata.table() has an extra exact argument to enable partial match (i.e. when target strings and those in the treedata.table object match partially). Second, extractVector() can extract multiple columns and accepts non-standard evaluation (i.e. names are treated as string literals).

The real power in treedata.table is in co-indexing the tree and table. For example, in the below command, we use data.table syntax to take the first representative from each ecomorph. We retain all data columns. If you examine the tree object, you will see that it has had all the tips absent from the resultant data.table.

 td[, head(.SD, 1), by = "ecomorph"]
## $phy 
## 
## Phylogenetic tree with 7 tips and 6 internal nodes.
## 
## Tip labels:
##   ahli, ophiolepis, garmani, opalinus, valencienni, reconditus, ...
## 
## Rooted; includes branch lengths.
## 
## $dat 
##    ecomorph   tip.label      SVL  PCI_limbs  PCII_head PCIII_padwidth_vs_tail
## 1:       TG        ahli 4.039125 -3.2482860  0.3722519             -1.0422187
## 2:       GB  ophiolepis 3.637962  0.7915117  1.4585760             -1.3152005
## 3:       CG     garmani 4.769473 -0.7735264  0.9371249              0.2594994
## 4:       TC    opalinus 3.838376 -1.7794371 -0.3245381              1.5569939
## 5:       TW valencienni 4.321524  2.9424139 -0.8846007              1.8543308
## 6:        U  reconditus 4.482607 -2.7270416 -0.2104066             -2.3534242
##    PCIV_lamella_num awesomeness   hostility    attitude      island
## 1:       -2.4147423 -0.24165170 -0.17347691  0.64437708        Cuba
## 2:       -2.2377514  0.35441877  0.05366142 -0.09389530        Cuba
## 3:        0.1051149  0.16779131  0.67675600 -0.69460080 Puerto Rico
## 4:        0.9366501  1.48302162 -0.90826653  0.72613483     Jamaica
## 5:        0.1288233 -0.08837008  0.46528679 -0.56754896     Jamaica
## 6:       -0.7992905  0.26096544 -0.27169792  0.01367143     Jamaica

We could also do the same operation with multiple columns:

td[, head(.SD, 1), by = .(ecomorph, island)]
## $phy 
## 
## Phylogenetic tree with 23 tips and 22 internal nodes.
## 
## Tip labels:
##   ahli, ophiolepis, garmani, opalinus, grahami, valencienni, ...
## 
## Rooted; includes branch lengths.
## 
## $dat 
##    ecomorph      island   tip.label      SVL  PCI_limbs  PCII_head
## 1:       TG        Cuba        ahli 4.039125 -3.2482860  0.3722519
## 2:       GB        Cuba  ophiolepis 3.637962  0.7915117  1.4585760
## 3:       CG Puerto Rico     garmani 4.769473 -0.7735264  0.9371249
## 4:       TC     Jamaica    opalinus 3.838376 -1.7794371 -0.3245381
## 5:       TC Puerto Rico     grahami 4.154274 -2.3056535 -1.9139369
## 6:       TW     Jamaica valencienni 4.321524  2.9424139 -0.8846007
##    PCIII_padwidth_vs_tail PCIV_lamella_num awesomeness   hostility   attitude
## 1:             -1.0422187       -2.4147423 -0.24165170 -0.17347691  0.6443771
## 2:             -1.3152005       -2.2377514  0.35441877  0.05366142 -0.0938953
## 3:              0.2594994        0.1051149  0.16779131  0.67675600 -0.6946008
## 4:              1.5569939        0.9366501  1.48302162 -0.90826653  0.7261348
## 5:              1.6852579        1.0144193  0.41064280 -0.11746257  0.7022959
## 6:              1.8543308        0.1288233 -0.08837008  0.46528679 -0.5675490

Tail is also implemented

 td[, tail(.SD, 1), by = "ecomorph"]
## $phy 
## 
## Phylogenetic tree with 7 tips and 6 internal nodes.
## 
## Tip labels:
##   marcanoi, loysiana, equestris, monticola, hendersoni, coelestinus, ...
## 
## Rooted; includes branch lengths.
## 
## $dat 
##    ecomorph   tip.label      SVL   PCI_limbs  PCII_head PCIII_padwidth_vs_tail
## 1:       TG    marcanoi 4.079485 -2.84448243 -2.7864415             -0.8020303
## 2:       GB  hendersoni 3.859835  1.28963045 -2.0630985             -3.4656535
## 3:       CG   equestris 5.113994  1.05461517  0.7072039              0.7108046
## 4:       TC coelestinus 4.297965 -0.02721683  0.3687537              1.6364316
## 5:       TW    occultus 3.663049  7.92078444 -0.1901397              2.4922819
## 6:        U   monticola 3.770613 -3.25118016  0.1559934             -2.2390082
##    PCIV_lamella_num awesomeness  hostility   attitude      island
## 1:      -1.04842823   1.1823433 -0.1671936  0.5827900  Hispaniola
## 2:       2.58336718   0.3854544 -0.7133164 -0.3959792  Hispaniola
## 3:       1.66043194   1.0805662 -1.2666114  0.6673026        Cuba
## 4:       1.02571762   0.2909266 -0.6209660  1.2803335  Hispaniola
## 5:      -0.09577977  -1.1916870  1.2153014  0.0324486 Puerto Rico
## 6:       0.13156827   0.6289893  0.1468777 -0.4409775  Hispaniola

Columns in the treedata.table object can also be operated on using general data.table syntax. In the below example, the tree is pruned to those tips that occur in Cuba. This is the data.table equivalent of dplyr’s filter. Then, a new column is created in the data.table, assigned the name “Index”, and assigned the value of the SVL + the hostility index. This enables concurrent manipulation of the phylogeny, and the calculation of a new index for only those tips we would actually like to use.

td[island == "Cuba",.(Index=SVL+hostility)]
## $phy 
## 
## Phylogenetic tree with 47 tips and 46 internal nodes.
## 
## Tip labels:
##   ahli, allogus, rubribarbus, imias, sagrei, bremeri, ...
## 
## Rooted; includes branch lengths.
## 
## $dat 
##       Index
## 1: 3.865649
## 2: 3.540042
## 3: 4.558514
## 4: 3.688875
## 5: 4.786475
## 6: 5.526089

Running functions on treedata.table objects

In the below command, we extract one vector from our data.table and use geiger’s continuous model fitting to estimate a Brownian motion model for the data using the tdt function.

tdt(td, geiger::fitContinuous(phy, extractVector(td, 'SVL'), model="BM", ncores=1))
## Phylo object detected. Expect a single function output
## GEIGER-fitted comparative model of continuous data
##  fitted 'BM' model parameters:
##  sigsq = 0.136160
##  z0 = 4.065918
## 
##  model summary:
##  log-likelihood = -4.700404
##  AIC = 13.400807
##  AICc = 13.524519
##  free parameters = 2
## 
## Convergence diagnostics:
##  optimization iterations = 100
##  failed iterations = 0
##  number of iterations with same best fit = 100
##  frequency of best fit = 1.00
## 
##  object summary:
##  'lik' -- likelihood function
##  'bnd' -- bounds for likelihood search
##  'res' -- optimization iteration summary
##  'opt' -- maximum likelihood parameter estimates

Dropping and extracting taxa from treedata.table objects

We can also drop tips directly from the tree, and have those tips drop concurrently from the data.table. In the example below, we remove two taxa by name.

dt <- droptreedata.table(tdObject=td, taxa=c("chamaeleonides" ,"eugenegrahami" ))
## 2 taxa were dropped from the treedata.table object

We can check if A. chamaeleonides and A. eugenegrahami are still in the tree

c("chamaeleonides" ,"eugenegrahami" ) %in% dt$phy$tip.label
## [1] FALSE FALSE

And we can do the same with the data in the treedata.table object

c("chamaeleonides" ,"eugenegrahami" ) %in% dt$dat$X
## [1] FALSE FALSE

When you’re done, the data.table and tree can both be extracted from the object:

df <- pulltreedata.table(td, "dat")
tree <- pulltreedata.table(td, "phy")

The table

df
##            tip.label      SVL   PCI_limbs   PCII_head PCIII_padwidth_vs_tail
##   1:            ahli 4.039125 -3.24828599  0.37225191             -1.0422187
##   2:         allogus 4.040138 -2.84557021  0.60011341             -1.0253056
##   3:     rubribarbus 4.078469 -2.23834859  1.11997785             -1.1929572
##   4:           imias 4.099687 -3.04891725  2.33203488              0.1616442
##   5:          sagrei 4.067162 -1.74105547  2.02282431              0.1693635
##   6:         bremeri 4.113371 -1.81361138  2.60675012              0.6399320
##   7: quadriocellifer 3.901619 -2.26789400  0.99092075              0.3553405
##   8:      ophiolepis 3.637962  0.79151174  1.45857603             -1.3152005
##   9:         mestrei 3.987147 -2.60261906  1.27568612              0.4640379
##  10:           jubar 3.952605 -2.22414593  0.94489985              0.6600716
##  11:      homolechis 4.032806 -2.74499346  0.87926009              0.8679694
##  12:        confusus 3.938442 -2.49591732  0.16823269              0.1551290
##  13:           guafe 3.877457 -2.61408710  0.65608676              0.6071245
##  14:         garmani 4.769473 -0.77352640  0.93712494              0.2594994
##  15:        opalinus 3.838376 -1.77943710 -0.32453812              1.5569939
##  16:         grahami 4.154274 -2.30565354 -1.91393689              1.6852579
##  17:     valencienni 4.321524  2.94241389 -0.88460072              1.8543308
##  18:      lineatopus 4.128612 -2.43081291 -3.12552390             -1.7564495
##  19:      reconditus 4.482607 -2.72704156 -0.21040657             -2.3534242
##  20:       evermanni 4.165605 -2.52899245  0.12548098              1.8824633
##  21:       stratulus 3.869881 -1.62264165 -0.52957490              2.2166952
##  22:           krugi 3.886500 -1.68879533 -0.83128181             -1.2588892
##  23:      pulchellus 3.799022  0.16238151 -2.33846103             -1.5906715
##  24:       gundlachi 4.188105 -2.64936274 -0.56251604             -2.2852265
##  25:       poncensis 3.820378  0.52782664  1.24062035             -1.6249761
##  26:           cooki 4.091535 -2.22079009  0.05979850             -0.1092647
##  27:    cristatellus 4.189820 -3.33026331 -0.62225189              1.2175309
##  28:    brevirostris 3.874155 -3.28900081  1.38425488              2.4070756
##  29:        caudalis 3.911743 -1.78270839  1.90870776              1.7530966
##  30:          marron 3.831810 -2.84709341 -0.12032028              1.6898101
##  31:        websteri 3.916546 -2.50870054  0.97482786              2.9024438
##  32:       distichus 3.928796 -3.84343343  0.83890749              2.4922170
##  33:        barbouri 3.663932 -0.87536237  1.34009434             -2.6138245
##  34:         alumina 3.588941  0.72166993  1.52514444             -2.6721669
##  35:    semilineatus 3.696631  0.18403236 -0.13872022             -2.8957227
##  36:         olssoni 3.793899  0.81682668  3.87442813             -2.4337310
##  37:      etheridgei 3.657991 -3.81065955 -0.75340900             -2.0659201
##  38:         fowleri 4.288780 -1.03667003  1.50383762             -1.7589251
##  39:       insolitus 3.800471  5.03062671  0.24137669              0.9139707
##  40:       whitemani 4.097479 -2.54584901 -3.25974024             -1.9200701
##  41:       haetianus 4.316542 -3.40402925 -3.78444664             -1.7798344
##  42:        breslini 4.051111 -2.97497529 -3.34153375             -1.8978249
##  43:         armouri 4.121684 -3.16993598 -4.08620441             -0.8883209
##  44:         cybotes 4.210982 -3.11637922 -2.99620854             -0.8299057
##  45:         shrevei 3.983003 -2.25952607 -3.55788235             -1.3884348
##  46:   longitibialis 4.242103 -3.52243048 -1.61670439             -1.6182845
##  47:         strahmi 4.274271 -3.87340303 -1.01635836             -0.9366696
##  48:        marcanoi 4.079485 -2.84448243 -2.78644148             -0.8020303
##  49:        baleatus 5.053056  0.73766495  1.79646028             -0.5409516
##  50:       barahonae 5.076958  0.90731040  2.33222342             -0.6158464
##  51:        ricordii 5.013963  0.58940470  1.34670464             -0.8626956
##  52:   eugenegrahami 4.128504 -4.21209140  4.83351955              1.0228151
##  53:     christophei 3.884652 -2.70596332  1.70527559             -0.1725921
##  54:         cuvieri 4.875012 -1.18955124 -0.71983364             -1.0167340
##  55:        barbatus 5.003946  2.25020229 -3.30818172              1.3476390
##  56:          porcus 5.038034  3.50614537 -2.98667964              0.7500647
##  57:  chamaeleonides 5.042349  2.95597428 -3.69231889              1.3297304
##  58:       guamuhaya 5.036953  3.10947396 -4.07973423             -0.1820287
##  59:   altitudinalis 3.842994  2.86751469 -6.12805047              2.3331196
##  60:        oporinus 3.845670  3.05888289 -2.91565342              2.2875989
##  61:        isolepis 3.657088  3.05697642 -4.34018373              2.4409248
##  62:        allisoni 4.375390  2.03597967 -3.74252815              0.5203703
##  63:        porcatus 4.258991  1.93193251 -3.82953305              0.9781194
##  64:     argillaceus 3.757869 -0.11307851 -1.48944374              2.3710815
##  65:       centralis 3.697941  0.73073876 -0.41683597              1.7586477
##  66:         pumilis 3.466860  0.55404946 -0.42584152              2.1572563
##  67:        loysiana 3.701240  0.31536951 -1.08038145              2.7442074
##  68:         guazuma 3.763884  8.16566506 -0.60605865              1.7597408
##  69:        placidus 3.773967  7.38332866  0.53958973              2.7042981
##  70:        sheplani 3.682924 10.27389091  2.27784409              1.6981742
##  71:         alayoni 3.815705  3.40888624 -1.78335850              2.2084510
##  72:     angusticeps 3.788595  4.58711071 -1.97673831              1.1594671
##  73:        paternus 3.802961  2.90637723 -0.95846093              0.9491115
##  74:       alutaceus 3.554891  1.17338999 -0.61493813             -1.6539883
##  75:    inexpectatus 3.537439  2.50607244 -0.52340367             -2.8057449
##  76:       clivicola 3.758726 -1.05114421 -0.58903393             -1.2178042
##  77:    cupeyalensis 3.462014  2.72419698  0.48960424             -2.4795271
##  78:    cyanopleurus 3.630161  0.43328510  0.98930100             -2.8189997
##  79:         alfaroi 3.526655  2.58175921  0.77876335             -2.4463337
##  80:      macilentus 3.715765  3.15177391  3.26626613             -3.7238293
##  81:       vanidicus 3.626206  4.04436760  1.08716320             -2.4921192
##  82:     argenteolus 3.971307 -2.92797328  2.61964493              0.9791727
##  83:          lucius 4.198915 -4.38139803  1.25981123              2.1899604
##  84:        bartschi 4.280547 -3.25502168  0.80565652              1.1234288
##  85:    vermiculatus 4.802849  0.22783467  1.41411087             -1.8467441
##  86:        baracoae 5.042780  0.76817392  0.06987127              0.1805891
##  87:          noblei 5.083473 -0.09337994 -0.96088851              0.8905492
##  88:      smallwoodi 5.035096 -0.13770527 -1.15140405              0.4296432
##  89:    luteogularis 5.101085  0.39614254  0.73584435              1.0058546
##  90:       equestris 5.113994  1.05461517  0.70720387              0.7108046
##  91:       monticola 3.770613 -3.25118016  0.15599344             -2.2390082
##  92:   bahorucoensis 3.827445 -0.04747332 -2.55694724             -3.0896949
##  93: dolichocephalus 3.908550  2.60131528 -2.59530770             -4.1439327
##  94:      hendersoni 3.859835  1.28963045 -2.06309845             -3.4656535
##  95:     darlingtoni 4.302036  4.06703170 -1.49378979             -0.2002259
##  96:        aliniger 4.036557  0.12323898 -1.67467041              2.3871336
##  97:      singularis 4.057997  0.36326789 -0.95422871              1.6562154
##  98:    chlorocyanus 4.275448  0.43906343  1.35403450              1.9531470
##  99:     coelestinus 4.297965 -0.02721683  0.36875369              1.6364316
## 100:        occultus 3.663049  7.92078444 -0.19013968              2.4922819
##            tip.label      SVL   PCI_limbs   PCII_head PCIII_padwidth_vs_tail
##      PCIV_lamella_num  awesomeness    hostility    attitude ecomorph
##   1:      -2.41474228 -0.241651698 -0.173476906  0.64437708       TG
##   2:      -2.46331106  0.624468879 -0.500096224  0.71289104       TG
##   3:      -2.08743282 -0.427757376  0.480044450 -0.96742634       TG
##   4:      -2.11260585  0.169425977 -0.410812337  0.19635800       TG
##   5:      -1.37576941 -0.630433775  0.719312962 -1.22282764       TG
##   6:      -1.62629939 -1.754300558  1.412718374  0.18323450       TG
##   7:      -2.10505922 -0.257638879  0.462708058 -0.27127944       TG
##   8:      -2.23775137  0.354418772  0.053661422 -0.09389530       GB
##   9:      -1.19666399 -0.228920131  0.820920959 -0.73929564       TG
##  10:      -1.65749549  2.145582200 -0.993730897  1.05775273       TG
##  11:      -1.56665822 -0.085375433  0.092602997 -0.08130904       TG
##  12:      -1.39796407  0.496114209 -0.544543392  1.36010631       TG
##  13:      -1.48220834 -0.139145550 -0.310434629 -0.50480610       TG
##  14:       0.10511495  0.167791307  0.676756002 -0.69460080       CG
##  15:       0.93665013  1.483021624 -0.908266532  0.72613483       TC
##  16:       1.01441926  0.410642801 -0.117462571  0.70229589       TC
##  17:       0.12882327 -0.088370075  0.465286788 -0.56754896       TW
##  18:      -1.43952303  0.800931449  0.170290172  0.33555714       TG
##  19:      -0.79929053  0.260965443 -0.271697917  0.01367143        U
##  20:       1.92392086  1.871367582 -2.029729624  1.02877511       TC
##  21:       0.94622231 -0.314853533  0.515229477 -0.40828716       TC
##  22:       0.24029913  0.972494741 -0.371866585  1.46109470       GB
##  23:       0.68180888  0.978157532 -0.810754596  1.39277529       GB
##  24:      -2.48420519 -0.426336538  0.613014449 -0.69318262       TG
##  25:      -0.94924727 -0.289982852  0.510241609 -0.18543914       GB
##  26:      -0.50826932  1.277956446 -1.082760383  1.37721870       TG
##  27:      -1.21819703  0.830658098 -0.007447027  0.39061232       TG
##  28:      -0.82666991 -1.538338585  1.633533660 -1.24247895        T
##  29:      -1.44378878 -0.601304152  0.216500950  0.85182003        T
##  30:      -1.57063776 -2.149486418  2.413050748 -2.14378229        T
##  31:      -1.53259879  0.025584758  0.124044450  0.11758642        T
##  32:      -1.03972507  1.973200862 -1.608003643  0.91461500        T
##  33:      -4.30147185  1.788945648 -0.913725183  0.64025272        U
##  34:       1.23487950 -1.253724344  1.308419442 -0.96110895       GB
##  35:       0.92280509 -0.612226281  0.807322377 -0.82943161       GB
##  36:       0.62906887 -1.391771586  1.210221860 -0.29186894       GB
##  37:      -0.74890866  0.848149691 -0.960258609  0.18291181        U
##  38:      -1.71914111  1.456935239 -1.448418148  0.07531334        U
##  39:      -0.42075245  0.066715596 -0.290651288  0.07286240       TW
##  40:      -2.41993928 -1.457775289  1.096071557 -0.87393333       TG
##  41:      -2.20379012  0.721747833 -0.969190196  0.74101761       TG
##  42:      -2.16718706 -1.944082859  2.147925602 -2.07465046       TG
##  43:      -2.02129909 -0.158605136 -0.369246555 -0.26866597       TG
##  44:      -2.09049464  0.905454434 -0.262630999  0.68467864       TG
##  45:      -2.19082487  0.257277082  0.029600473  0.39422885       TG
##  46:      -2.67106616  2.537213358 -1.420542767  1.71562944       TG
##  47:      -1.57843390  0.340077411 -0.690011247  2.11135720       TG
##  48:      -1.04842823  1.182343323 -0.167193617  0.58279004       TG
##  49:      -0.16220546  2.727286255 -2.487661729  2.78477616       CG
##  50:      -0.19473780  1.831370900 -1.331616706  1.70626854       CG
##  51:       0.03516802 -0.456651495  0.663302028 -0.64625837       CG
##  52:       1.66539278  2.155800992 -2.494661307  1.11438687        U
##  53:       0.64693336 -0.266699615  0.220410336  1.46547483        U
##  54:      -0.02153073 -0.115917120  0.281153377 -0.97876663       CG
##  55:      -1.64780456  2.156287540 -2.094147109  1.97196598        U
##  56:      -1.19909229  0.158971414 -0.350187677  0.45987065        U
##  57:      -1.51973745 -1.193993760  1.858148718 -1.43308743        U
##  58:      -0.10748930 -0.137962568  0.119982369  0.04203987        U
##  59:       0.68195498  1.164592168 -0.865462260  0.63326685       TC
##  60:      -0.08659903  0.573048475 -0.985921965  0.88025286       TC
##  61:      -0.07418779 -0.194644197  0.001671326  0.16264659       TC
##  62:       2.05565172 -0.132309870  0.464556617 -0.54956842       TC
##  63:       2.88538479 -0.074646660  0.148259194 -0.57178426       TC
##  64:       0.33264142  0.007554828 -0.259421287 -0.62559912        U
##  65:      -1.13869021 -0.620236225  0.330225203 -0.71777358        U
##  66:      -1.12208954  0.459254083 -0.162682657 -0.47694819        U
##  67:      -0.52657687  2.153959487 -1.198967281  1.51422456        T
##  68:       1.55102509 -0.015197500 -0.020516523  0.08678021       TW
##  69:      -0.31778878  0.078986096  0.504242392 -0.40436325       TW
##  70:      -0.25962432 -0.431283305  0.321955192 -0.80553288       TW
##  71:       0.94969689 -0.259032167  0.127344278  0.29597325       TW
##  72:       0.38835687  1.713217290 -1.884387903  0.92471752       TW
##  73:       1.80146660 -0.299550789  0.846263466 -0.96311064       TW
##  74:       1.41160228  0.325807029 -0.523648505  0.50405157       GB
##  75:       1.68036114  0.244666550 -0.307162858  0.06937286       GB
##  76:      -0.55865998  0.340444764 -0.599034616  1.78969146       GB
##  77:      -0.03297035  1.327984163 -0.994951781  0.04668455       GB
##  78:       0.87176931  0.413447859  0.073949884 -0.50654925       GB
##  79:       0.70036608 -0.462062012  0.178370302 -0.01958915       GB
##  80:       1.21810218  0.868463721 -0.287882420  0.69946303       GB
##  81:       0.18942396 -1.287008036  1.023037680 -0.67591746       GB
##  82:       2.94194227  0.490363636 -0.505416684 -0.20254651        U
##  83:       1.75435972  0.126135253  0.545903248 -0.58505782        U
##  84:       1.74943703 -1.189744988  1.025075387  0.25994625        U
##  85:       0.71173422  0.159291276 -0.024230945 -0.31575501        U
##  86:       2.66309134  1.821981086 -1.522244645  2.17591511       CG
##  87:       2.09456880 -0.974406590  1.602507741 -0.42228829       CG
##  88:       2.44067497 -0.018317012 -0.366531140  1.59163441       CG
##  89:       1.98043577  0.194610912  0.713343825 -0.56222110       CG
##  90:       1.66043194  1.080566180 -1.266611407  0.66730260       CG
##  91:       0.13156827  0.628989307  0.146877669 -0.44097752        U
##  92:       1.56271877  2.553879072 -2.337986521  2.47075117       GB
##  93:       3.67023402  0.739483022 -0.989799476  1.09191365       GB
##  94:       2.58336718  0.385454354 -0.713316425 -0.39597920       GB
##  95:       0.31138087  1.718720076 -1.690079016  1.02145675       TW
##  96:       0.58486431  0.006869282  0.144815367  0.29376432       TC
##  97:       1.00756926  1.592083294 -1.701052660  1.45313446       TC
##  98:       1.80512493 -1.065610146  0.920097708 -0.93721735       TC
##  99:       1.02571762  0.290926638 -0.620965953  1.28033350       TC
## 100:      -0.09577977 -1.191686980  1.215301402  0.03244860       TW
##      PCIV_lamella_num  awesomeness    hostility    attitude ecomorph
##           island
##   1:        Cuba
##   2:        Cuba
##   3:        Cuba
##   4:        Cuba
##   5:        Cuba
##   6:        Cuba
##   7:        Cuba
##   8:        Cuba
##   9:        Cuba
##  10:        Cuba
##  11:        Cuba
##  12:        Cuba
##  13:        Cuba
##  14: Puerto Rico
##  15:     Jamaica
##  16: Puerto Rico
##  17:     Jamaica
##  18:     Jamaica
##  19:     Jamaica
##  20: Puerto Rico
##  21: Puerto Rico
##  22: Puerto Rico
##  23: Puerto Rico
##  24: Puerto Rico
##  25: Puerto Rico
##  26: Puerto Rico
##  27: Puerto Rico
##  28:  Hispaniola
##  29:  Hispaniola
##  30:  Hispaniola
##  31:  Hispaniola
##  32:  Hispaniola
##  33:  Hispaniola
##  34:  Hispaniola
##  35:  Hispaniola
##  36:  Hispaniola
##  37:  Hispaniola
##  38:  Hispaniola
##  39:  Hispaniola
##  40:  Hispaniola
##  41:  Hispaniola
##  42:  Hispaniola
##  43:  Hispaniola
##  44:  Hispaniola
##  45:  Hispaniola
##  46:  Hispaniola
##  47:  Hispaniola
##  48:  Hispaniola
##  49:  Hispaniola
##  50:  Hispaniola
##  51:  Hispaniola
##  52:  Hispaniola
##  53:  Hispaniola
##  54: Puerto Rico
##  55:        Cuba
##  56:        Cuba
##  57:        Cuba
##  58:        Cuba
##  59:        Cuba
##  60:        Cuba
##  61:        Cuba
##  62:        Cuba
##  63:        Cuba
##  64:        Cuba
##  65:        Cuba
##  66:        Cuba
##  67:        Cuba
##  68:        Cuba
##  69:  Hispaniola
##  70:  Hispaniola
##  71:        Cuba
##  72:        Cuba
##  73:        Cuba
##  74:        Cuba
##  75:        Cuba
##  76:        Cuba
##  77:        Cuba
##  78:        Cuba
##  79:        Cuba
##  80:        Cuba
##  81:        Cuba
##  82:        Cuba
##  83:        Cuba
##  84:        Cuba
##  85:        Cuba
##  86:        Cuba
##  87:        Cuba
##  88:        Cuba
##  89:        Cuba
##  90:        Cuba
##  91:  Hispaniola
##  92:  Hispaniola
##  93:  Hispaniola
##  94:  Hispaniola
##  95:  Hispaniola
##  96:  Hispaniola
##  97:  Hispaniola
##  98:  Hispaniola
##  99:  Hispaniola
## 100: Puerto Rico
##           island

and the corresponding tree

tree
## 
## Phylogenetic tree with 100 tips and 99 internal nodes.
## 
## Tip labels:
##   ahli, allogus, rubribarbus, imias, sagrei, bremeri, ...
## 
## Rooted; includes branch lengths.