Skip to content

Is there a space in matrixStats for rowScale, colScale ? #255

Open
@karoliskoncevicius

Description

@karoliskoncevicius

This issue is a question whether rowScale and colScale belongs in matrixStats.

In base there is scale(), however it is not convenient:

  1. it works on columns, so requires transposing to work on rows.
  2. it is quite slow.
X <- matrix(rnorm(100000000), ncol=1000)

system.time(scale(X))
  user  system elapsed                                                                                                                                                                                                               
17.748   2.032  19.825

The way I do scaling is now often like this:

system.time((X - colMeans(X)[col(X)]) / matrixStats::colSds(X)[col(X)])
 user  system elapsed                                                                                                                                                                                                               
5.057   0.878   5.949

But that is awkward to write, and still not efficient (means are calculated for both colMeans and colSds, col(X) is there twice).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions