R/reorder.R

Defines functions reorder.dataset

Documented in reorder.dataset

#  Copyright 2018 Patrick O. Perry.
#
#  Licensed under the Apache License, Version 2.0 (the "License");
#  you may not use this file except in compliance with the License.
#  You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
#  limitations under the License.


reorder.dataset <- function(x, ...)
{
    x <- as.dataset(x)
    i <- scopeQuoted.dataset(x, substitute(list(...)), parent.frame())

    if (length(i) == 0) {
        return(x)
    }

    for (j in seq_along(i)) {
        i[[j]] <- xtfrm.dataset(i[[j]])
    }

    names <- names(i)
    if (!is.null(names)) {
        if (!all(names %in% c("asc", "desc", ""))) {
            stop("named arguments must be 'asc' or 'desc'")
        }
        desc <- (names == "desc")
        for (j in seq_along(i)) {
            if (desc[[j]]) {
                i[[j]] <- -i[[j]]
            }
        }
    }

    o <- do.call(order, i)
    x[o, ]
}
patperry/r-frame documentation built on May 6, 2019, 8:34 p.m.