Select helpers

The package metan reexports the tidy select helpers and implements own select helpers based on operations with prefixes and suffixes (difference_var(), intersect_var(), and union_var()), length of variable names (width_of(), width_greater_than(), and width_less_than()), and on case type (lower_case_only(), upper_case_only(), and title_case_only()).

Variables that start with a prefix and ends with a suffix.

Here, we will select the variables from data_ge2 that start with “C” and ends with “D”. Just to reduce the length of outputs, only three rows are selected

Variables that start with a prefix OR ends with a suffix.

The following code select variables that start with “C” or ends with “D”.

Variables that start with a prefix AND NOT ends with a suffix.

The following code select variables that start with “C” and not ends with “D”.

Selection based on length of column names.

  • Select variables with an specific name length (four letters)
  • Select variables with width less than n.
  • Select variables with width greater than n.

Select variables by case type

Let’s create data frame with ‘messy’ columnn names.

df <- head(data_ge, 3)
colnames(df) <- c("Env", "gen", "Rep", "GY", "hm")
select_cols(df, lower_case_only()) %>% print_table()
select_cols(df, upper_case_only()) %>% print_table()
select_cols(df, title_case_only()) %>% print_table()

Remove rows or colums wih NA values

The functions remove_rows_na() and remove_rows_na() are used to remove rows and columns with NA values, respectively.

Bind cross-validation objects

AMMI0 <- cv_ammi(data_ge, ENV, GEN, REP, GY, naxis = 0)
AMMI2 <- cv_ammi(data_ge, ENV, GEN, REP, GY, naxis = 2)
AMMI9 <- cv_ammi(data_ge, ENV, GEN, REP, GY, naxis = 9)
AMMIF <- cv_ammif(data_ge, ENV, GEN, REP, GY)
BLUP_g <- cv_blup(data_ge, ENV, GEN, REP, GY)
bind1 <- bind_cv(AMMI0, AMMI2, AMMI9)
bind2 <- bind_cv(AMMI0, AMMI2, AMMI9, bind = "means")

Split a dataframe into subsets grouped by one or more factors

Group data and exclude all non-numeric variables

Group data and keep all original variables

g2 <- split_factors(data_ge, ENV, GEN, keep_factors = TRUE)

Make a two-way table based on categorical and numerical arguments

matrix <- make_mat(data_ge, row = GEN, col = ENV, val = GY)
print_table(matrix, rownames = TRUE)

Make upper and lower triangular matrices

Make a symmetric matrix

Reorder a correlation matrix

Reorder the correlation matrix according to the correlation coefficient by using hclust for hierarchical clustering order. This is useful to identify the hidden pattern in the matrix.

reorder_cormat(cor_mat) %>% print_table(rownames = TRUE)

Generate pairwise combinations of variables by applying one function to each pair

data <- data.frame(A = runif(n = 5, min = 3, max = 30),
                   B = runif(n = 5, min = 1, max = 10),
                   C = runif(n = 5, min = 9, max = 90),
                   D = runif(n = 5, min = 1, max = 90),
                   E = runif(n = 5, min = 5, max = 10))
c1 <- comb_vars(data)

c2 <- comb_vars(data, FUN = "*", order = "first")

Combining data.frames by row, filling missing values

df1 <- data.frame(v1 = c(1, 2), v2 = c(2, 3))
df2 <- data.frame(v3 = c(4, 5))
rbind_fill(df1, df2) %>% print_table()
rbind_fill(df1, df2, fill = "NA") %>% print_table()

Rescale a continuous vector to have specified minimum and maximum values

Rescale a numeric vector

Rescale using a data frame and select rescaled variables only

data_ge %>%
resca(GY, HM, new_min = 0, new_max = 1,  keep = FALSE) %>%

Rescale within factors

  data_ge2 %>% 
    select(ENV, GEN, starts_with("N"), ends_with("L")) %>%
    group_by(ENV, GEN) %>%
    summarise_all(mean) %>%
    group_by(ENV) %>%
    resca(ends_with("L")) %>%
    head(n = 13) %>%

Rendering engine

This vignette was built with pkgdown. All tables were produced with the package DT using the following function.

library(DT) # Used to make the tables
# Function to make HTML tables
print_table <- function(table, rownames = FALSE, ...){
datatable(table, rownames = rownames, extensions = 'Buttons',
          options = list(scrollX = TRUE, dom = '<<t>Bp>', buttons = c('copy', 'excel', 'pdf', 'print')), ...) %>%
    formatSignif(columns = c(1:ncol(table)), digits = 3)}