A sortable table keeps row values together while changing their display order.

Program

Play the script to choose a sort mode and watch the row order change.

table_sort.R
item <- c("alpha", "beta", "gamma")
count <- c(5, 12, 8)
sort_mode <- 
mode <- c("name", "count_desc", "count_asc")[sort_mode]
order_index <- switch(mode, name = order(item), count_desc = order(-count), count_asc = order(count))
rows <- paste(item[order_index], count[order_index], sep = "=")
label <- paste(rows, collapse = ",")
cat(label, "\n", sep = "")
item <- c("alpha", "beta", "gamma")
count <- c(5, 12, 8)
sort_mode <- 
mode <- c("name", "count_desc", "count_asc")[sort_mode]
order_index <- switch(mode, name = order(item), count_desc = order(-count), count_asc = order(count))
rows <- paste(item[order_index], count[order_index], sep = "=")
label <- paste(rows, collapse = ",")
cat(label, "\n", sep = "")
item <- c("alpha", "beta", "gamma")
count <- c(5, 12, 8)
sort_mode <- 
mode <- c("name", "count_desc", "count_asc")[sort_mode]
order_index <- switch(mode, name = order(item), count_desc = order(-count), count_asc = order(count))
rows <- paste(item[order_index], count[order_index], sep = "=")
label <- paste(rows, collapse = ",")
cat(label, "\n", sep = "")
order `order(...)` returns row positions in sorted order.
switch `switch(mode, ...)` selects the active sort rule.
row integrity `item[order_index]` and `count[order_index]` keep columns aligned.