Learn R Programming

TreeSearch (version 1.0.1)

MinimumLength: Minimum length

Description

The smallest length that a character can obtain on any tree.

Usage

MinimumLength(x, compress = FALSE)

# S3 method for phyDat MinimumLength(x, compress = FALSE)

# S3 method for numeric MinimumLength(x, compress = NA)

MinimumSteps(x)

Arguments

x

An object of class phyDat, or an integer vector listing the tokens that may be present at each tip along a single character, with each token represented as a binary digit; e.g. a value of 11 ( = 2^0 + 2^1 + 2^3) means that the tip may have tokens 0, 1 or 3.

Inapplicable tokens should be denoted with the integer 0 (not 2^0).

Tokens that are ambiguous for an inapplicable and an applicable state are not presently supported; for an approximate value, denote such ambiguity with the integer 0.

compress

Logical specifying whether to retain the compression of a phyDat object or to return a vector specifying to each individual character, decompressed using the dataset's index attribute.

Value

MinimumLength() returns a vector of integers specifying the minimum number of steps that each character must contain.

See Also

Other tree scoring: CharacterLength(), IWScore(), MorphyTreeLength()

Examples

Run this code
# NOT RUN {
data('inapplicable.datasets')
myPhyDat <- inapplicable.phyData[[4]] 
MinimumLength(myPhyDat)
MinimumLength(myPhyDat, compress = TRUE)


class(myPhyDat) # phyDat object
# load your own data with
# my.PhyDat <- as.phyDat(read.nexus.data('filepath'))
# or Windows users can select a file interactively using:
# my.PhyDat <- as.phyDat(read.nexus.data(choose.files()))

# Convert list of character codings to an array
myData <- vapply(myPhyDat, I, myPhyDat[[1]])

# Convert phyDat's representation of states to binary
myContrast <- attr(myPhyDat, 'contrast')
tokens <- colnames(myContrast)
binaryContrast <- integer(length(tokens))
tokenApplicable <- tokens != '-'
binaryContrast[tokenApplicable] <- 2 ^ (seq_len(sum(tokenApplicable)) - 1)
binaryValues <- apply(myContrast, 1, 
  function (row) sum(binaryContrast[as.logical(row)]))
myStates <- matrix(binaryValues[myData], nrow = nrow(myData),
                   ncol = ncol(myData), dimnames = dimnames(myData))

# Finally, work out minimum steps 
apply(myStates, 1, MinimumLength)
# }

Run the code above in your browser using DataLab