psmelt {phyloseq} | R Documentation

## Melt phyloseq data object into large data.frame

### Description

The psmelt function is a specialized melt function for melting phyloseq objects (instances of the phyloseq class), usually for producing graphics with `ggplot2`. `psmelt` relies heavily on the `melt` and `merge` functions. The naming conventions used in downstream phyloseq graphics functions have reserved the following variable names that should not be used as the names of `sample_variables` or taxonomic `rank_names`. These reserved names are `c("Sample", "Abundance", "OTU")`. Also, you should not have identical names for sample variables and taxonomic ranks. That is, the intersection of the output of the following two functions `sample_variables`, `rank_names` should be an empty vector (e.g. `intersect(sample_variables(physeq), rank_names(physeq))`). All of these potential name collisions are checked-for and renamed automtically with a warning. However, if you (re)name your variables accordingly ahead of time, it will reduce confusion and eliminate the warnings.

### Usage

    psmelt(physeq)

### Arguments

`physeq` | (Required). An `otu_table-class` or `phyloseq-class`. Function most useful for phyloseq-class.

### Details

Note that “melted” phyloseq data is stored much less efficiently, and so RAM storage issues could arise with a smaller dataset (smaller number of samples/OTUs/variables) than one might otherwise expect. For common sizes of graphics-ready datasets, however, this should not be a problem. Because the number of OTU entries has a large effect on the RAM requirement, methods to reduce the number of separate OTU entries – for instance by agglomerating OTUs based on phylogenetic distance using `tip_glom` – can help alleviate RAM usage problems. This function is made user-accessible for flexibility, but is also used extensively by plot functions in phyloseq.

### Value

A `data.frame`-class table.

### See Also

`plot_bar`

`melt`

`merge`

### Examples

    data("GlobalPatterns")
    gp.ch = subset_taxa(GlobalPatterns, Phylum == "Chlamydiae")
    mdf = psmelt(gp.ch)
    nrow(mdf)
    ncol(mdf)
    colnames(mdf)
    head(rownames(mdf))
    # Create a ggplot similar to
    library("ggplot2")
    p = ggplot(mdf, aes(x=SampleType, y=Abundance, fill=Genus))
    p = p + geom_bar(color="black", stat="identity", position="stack")
    print(p)

[Package phyloseq version 1.38.0 Index]