| # File src/library/base/R/colSums.R |
| # Part of the R package, https://www.R-project.org |
| # |
| # Copyright (C) 1995-2015 The R Core Team |
| # |
| # This program is free software; you can redistribute it and/or modify |
| # it under the terms of the GNU General Public License as published by |
| # the Free Software Foundation; either version 2 of the License, or |
| # (at your option) any later version. |
| # |
| # This program is distributed in the hope that it will be useful, |
| # but WITHOUT ANY WARRANTY; without even the implied warranty of |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| # GNU General Public License for more details. |
| # |
| # A copy of the GNU General Public License is available at |
| # https://www.R-project.org/Licenses/ |
| |
| |
| ## NB: we now have implicitGeneric() on these, |
| ## in ../../methods/R/makeBasicFunsList.R |
| |
| colSums <- function(x, na.rm = FALSE, dims = 1L) |
| { |
| if(is.data.frame(x)) x <- as.matrix(x) |
| if(!is.array(x) || length(dn <- dim(x)) < 2L) |
| stop("'x' must be an array of at least two dimensions") |
| if(dims < 1L || dims > length(dn) - 1L) |
| stop("invalid 'dims'") |
| n <- prod(dn[id <- seq_len(dims)]) |
| dn <- dn[-id] |
| z <- if(is.complex(x)) |
| .Internal(colSums(Re(x), n, prod(dn), na.rm)) + |
| 1i * .Internal(colSums(Im(x), n, prod(dn), na.rm)) |
| else .Internal(colSums(x, n, prod(dn), na.rm)) |
| if(length(dn) > 1L) { |
| dim(z) <- dn |
| dimnames(z) <- dimnames(x)[-id] |
| } else names(z) <- dimnames(x)[[dims+1L]] |
| z |
| } |
| |
| colMeans <- function(x, na.rm = FALSE, dims = 1L) |
| { |
| if(is.data.frame(x)) x <- as.matrix(x) |
| if(!is.array(x) || length(dn <- dim(x)) < 2L) |
| stop("'x' must be an array of at least two dimensions") |
| if(dims < 1L || dims > length(dn) - 1L) |
| stop("invalid 'dims'") |
| n <- prod(dn[id <- seq_len(dims)]) |
| dn <- dn[-id] |
| z <- if(is.complex(x)) |
| .Internal(colMeans(Re(x), n, prod(dn), na.rm)) + |
| 1i * .Internal(colMeans(Im(x), n, prod(dn), na.rm)) |
| else .Internal(colMeans(x, n, prod(dn), na.rm)) |
| if(length(dn) > 1L) { |
| dim(z) <- dn |
| dimnames(z) <- dimnames(x)[-id] |
| } else names(z) <- dimnames(x)[[dims+1L]] |
| z |
| } |
| |
| rowSums <- function(x, na.rm = FALSE, dims = 1L) |
| { |
| if(is.data.frame(x)) x <- as.matrix(x) |
| if(!is.array(x) || length(dn <- dim(x)) < 2L) |
| stop("'x' must be an array of at least two dimensions") |
| if(dims < 1L || dims > length(dn) - 1L) |
| stop("invalid 'dims'") |
| p <- prod(dn[-(id <- seq_len(dims))]) |
| dn <- dn[id] |
| z <- if(is.complex(x)) |
| .Internal(rowSums(Re(x), prod(dn), p, na.rm)) + |
| 1i * .Internal(rowSums(Im(x), prod(dn), p, na.rm)) |
| else .Internal(rowSums(x, prod(dn), p, na.rm)) |
| if(length(dn) > 1L) { |
| dim(z) <- dn |
| dimnames(z) <- dimnames(x)[id] |
| } else names(z) <- dimnames(x)[[1L]] |
| z |
| } |
| |
| rowMeans <- function(x, na.rm = FALSE, dims = 1L) |
| { |
| if(is.data.frame(x)) x <- as.matrix(x) |
| if(!is.array(x) || length(dn <- dim(x)) < 2L) |
| stop("'x' must be an array of at least two dimensions") |
| if(dims < 1L || dims > length(dn) - 1L) |
| stop("invalid 'dims'") |
| p <- prod(dn[-(id <- seq_len(dims))]) |
| dn <- dn[id] |
| z <- if(is.complex(x)) |
| .Internal(rowMeans(Re(x), prod(dn), p, na.rm)) + |
| 1i * .Internal(rowMeans(Im(x), prod(dn), p, na.rm)) |
| else .Internal(rowMeans(x, prod(dn), p, na.rm)) |
| if(length(dn) > 1L) { |
| dim(z) <- dn |
| dimnames(z) <- dimnames(x)[id] |
| } else names(z) <- dimnames(x)[[1L]] |
| z |
| } |
| |
| .colSums <- function(x, m, n, na.rm = FALSE) |
| .Internal(colSums(x, m, n, na.rm)) |
| .colMeans <- function(x, m, n, na.rm = FALSE) |
| .Internal(colMeans(x, m, n, na.rm)) |
| |
| .rowSums <- function(x, m, n, na.rm = FALSE) |
| .Internal(rowSums(x, m, n, na.rm)) |
| .rowMeans <- function(x, m, n, na.rm = FALSE) |
| .Internal(rowMeans(x, m, n, na.rm)) |