# #' @title add_column
# #' @description add_column. This function is from tibble.
# #' @author Xiaotao Shen
# #' \email{shenxt1990@@outlook.com}
# #' @importFrom tibble add_column
# #' @include mass_dataset_class.R
# #' @param .data mass_data class
# #' @param ... dynamic-dots Name-value pairs, passed on to tibble().
# #' All values must have the same size of .data or size 1.
# #' @param .before One-based column index or column name where to add
# #' the new columns, default: after last column.
# #' @param .after One-based column index or column name where to add
# #' the new columns, default: after last column.
# #' @param .name_repair Treatment of problematic column names:
# #' "minimal": No name repair or checks, beyond basic existence,
# #' "unique": Make sure names are unique and not empty,
# #' "check_unique": (default value), no name repair, but check they are unique,
# #' "universal": Make the names unique and syntactic
# #' a function: apply custom name repair (e.g., .name_repair = make.names for
# #' names in the style of base R).
# #' A purrr-style anonymous function, see rlang::as_function()
# #' This argument is passed on as repair to vctrs::vec_as_names().
# #' See there for more details on these terms and the strategies
# #' used to enforce them.
# #' @return A mass_dataset class object
# #' @export
#
# setGeneric(name = "add_column")
#
# #' @title add_column
# #' @method add_column mass_dataset
# #' @param .data mass_data class
# #' @param ... dynamic-dots Name-value pairs, passed on to tibble().
# #' All values must have the same size of .data or size 1.
# #' @param .before One-based column index or column name where to add
# #' the new columns, default: after last column.
# #' @param .after One-based column index or column name where to add
# #' the new columns, default: after last column.
# #' @param .name_repair Treatment of problematic column names:
# #' "minimal": No name repair or checks, beyond basic existence,
# #' "unique": Make sure names are unique and not empty,
# #' "check_unique": (default value), no name repair, but check they are unique,
# #' "universal": Make the names unique and syntactic
# #' a function: apply custom name repair (e.g., .name_repair = make.names for
# #' names in the style of base R).
# #' A purrr-style anonymous function, see rlang::as_function()
# #' This argument is passed on as repair to vctrs::vec_as_names().
# #' See there for more details on these terms and the strategies
# #' used to enforce them.
# #' @include mass_dataset_class.R
# #' @export
# #' @return mass_dataset class
#
# setMethod(f = "add_column",
# signature("mass_dataset"),
# function(.data,
# ...,
# .before = NULL,
# .after = NULL,
# .name_repair = c("check_unique",
# "unique",
# "universal",
# "minimal")) {
# .name_repair <- match.arg(.name_repair)
# if (length(.data@activated) == 0) {
# stop("activate you object using activate_mass_dataset first.\n")
# }
#
# if (!.data@activated %in% c("expression_data",
# "sample_info",
# "variable_info")) {
# stop("activate should be one of 'expression_data',
# 'sample_info' and 'variable_info'")
# }
#
# temp_slot <-
# slot(object = .data, name = .data@activated)
#
# dots <- rlang::quos(...)
#
# temp_slot <-
# tibble::add_column(
# temp_slot,
# !!!dots,
# .before = .before,
# .after = .after,
# .name_repair = .name_repair
# )
#
# slot(object = .data, name = .data@activated) <-
# temp_slot
#
# if (.data@activated == "expression_data") {
# new_sample_id =
# setdiff(colnames(temp_slot), .data@sample_info$sample_id)
# if (length(new_sample_id) > 0) {
# new_sample_info =
# matrix(ncol = ncol(.data@sample_info),
# nrow = length(new_sample_id)) %>%
# as.data.frame()
# colnames(new_sample_info) = colnames(.data@sample_info)
# new_sample_info$sample_id = new_sample_id
# .data@sample_info =
# rbind(.data@sample_info,
# new_sample_info)
# .data@expression_data <-
# .data@expression_data[, .data@sample_info$sample_id, drop = FALSE]
# }
# }
#
# if (.data@activated == "sample_info") {
# if (ncol(temp_slot) > nrow(.data@sample_info_note)) {
# new_sample_info_note =
# data.frame(
# name = setdiff(colnames(temp_slot), .data@sample_info_note$name),
# meaning = setdiff(colnames(temp_slot), .data@sample_info_note$name),
# check.names = FALSE
# )
# .data@sample_info_note <-
# rbind(.data@sample_info_note,
# new_sample_info_note)
# .data@sample_info <-
# .data@sample_info[, .data@sample_info_note$name, drop = FALSE]
# }
# }
#
# if (.data@activated == "variable_info") {
# if (ncol(temp_slot) > nrow(.data@variable_info_note)) {
# new_variable_info_note =
# data.frame(
# name = setdiff(colnames(temp_slot), .data@variable_info_note$name),
# meaning = setdiff(colnames(temp_slot), .data@variable_info_note$name),
# check.names = FALSE
# )
# .data@variable_info_note =
# rbind(.data@variable_info_note,
# new_variable_info_note)
# .data@variable_info <-
# .data@variable_info[, .data@variable_info_note$name, drop = FALSE]
# }
# }
#
#
# process_info <- .data@process_info
#
# internal_parameter <-
# purrr::map2(names(dots), dots, function(x, y) {
# y = rlang::expr_label(y)
# y = stringr::str_replace_all(y, "\\`", "") %>%
# stringr::str_replace("\\~", "")
# paste(x, y, sep = '=')
# })
# names(internal_parameter) <- "dots"
# parameter <- new(
# Class = "tidymass_parameter",
# pacakge_name = "massdataset",
# function_name = "mutate()",
# parameter = c(
# internal_parameter,
# .before = .before,
# .after = .after,
# .name_repair = .name_repair
# ),
# time = Sys.time()
# )
#
# if (all(names(process_info) != "add_column")) {
# process_info$add_column = parameter
# } else{
# process_info$add_column = c(process_info$add_column, parameter)
# }
#
# .data@process_info <- process_info
#
# return(.data)
# })
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.