R/extract_metadata_phyloseq.R

Defines functions extract_metadata_phyloseq

Documented in extract_metadata_phyloseq

#' extract_metadata_phyloseq
#'
#' extract_metadata_phyloseq can extract metadata from a phyloseq object. First, the function will
#' extract metadata from phyloseq object using phyloseq::sample_data, and turn it into a tibble which
#' will turn rownames into a column name 'SampleID'. If feature parameter is given, then will select
#' SampleID and feature column, and add levels to the selected feature column.
#'
#' @param phyloseq A phyloseq object contain otu table, taxonomy table, sample metadata and phylogenetic
#' tree.
#'
#' @param feature The column name of the feature you want to select. Default is NA. If NA, will return
#' the complete metadata, else will return subject id and feature column that's given.
#'
#' @param col_name Name of column to use for rownames. Default is "SampleID". If If 'SampleID' is in
#' origin metadata, rename it with 'SampleID_origin'.
#'
#' @export
#'
#' @examples
#' extract_metadata_phyloseq(demo_phyloseq_object)

extract_metadata_phyloseq <- function(phyloseq, feature = NA, col_name = "SampleID") {
  ## Step 1: Extract metadata from phyloseq and turn into tibble
  # Learn From: https://github.com/ying14/yingtools2/blob/master/R/microbiota2.R - get.samp()
  metadata <- sample_data(phyloseq) %>% data.frame(stringsAsFactors = FALSE)
  if (col_name == "SampleID") {
    if ("SampleID" %in% colnames(metadata)) {
      # If 'SampleID' is in origin metadata, rename it with 'SampleID_origin'
      metadata <- metadata %>% dplyr::rename(SampleID_origin = SampleID) %>%
        rownames_to_column(var = "SampleID")
      warning("Rename the original 'SampleID' column to 'SampleID_origin'.")
    } else {
      metadata <- rownames_to_column(metadata, var = "SampleID")
    }
  } else {
    metadata <- rownames_to_column(metadata, var = col_name)
  }
  if (is.na(feature)) {
    return(metadata)
  } else {
    # Select column by feature name
    metadata <- dplyr::select(metadata, SampleID, !!feature)
    return(metadata)
  }
}
yeguanhuav/visual16S documentation built on Feb. 19, 2022, 10:32 a.m.