如何让矩阵减去矢量而不是按行

时间:2016-09-27 17:39:02

标签: r

我想获取每列减去其平均值的数据。 首先,我计算每列的平均值 我的数据名为m

public function render($request, Exception $e)
{
    if ($e instanceof \Symfony\Component\HttpKernel\Exception\TooManyRequestsHttpException) {
        return response('Too many requests. Slow your roll!');
    }
    return parent::render($request, $e);
}

所以最后的答案是通过列的减去平均值得出的。 我想减去每一行。我怎么能得到这个?

2 个答案:

答案 0 :(得分:2)

首先,让我们使用<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" /> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> <nav class="navbar navbar-inverse" data-spy="affix" data-offset-top="0"> <div class="container"> <!-- Brand and toggle get grouped for better mobile display --> <div class="navbar-header"> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="#">Brand</a> </div> <!-- Collect the nav links, forms, and other content for toggling --> <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> <ul class="nav navbar-nav"> <li class="active"><a href="#">Link <span class="sr-only">(current)</span></a></li> <li><a href="#">Link</a></li> <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a> <ul class="dropdown-menu"> <li><a href="#">Action</a></li> <li><a href="#">Another action</a></li> <li><a href="#">Something else here</a></li> <li role="separator" class="divider"></li> <li><a href="#">Separated link</a></li> <li role="separator" class="divider"></li> <li><a href="#">One more separated link</a></li> </ul> </li> </ul> <ul class="nav navbar-nav navbar-right"> <li><a href="#">Link</a></li> <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a> <ul class="dropdown-menu"> <li><a href="#">Action</a></li> <li><a href="#">Another action</a></li> <li><a href="#">Something else here</a></li> <li role="separator" class="divider"></li> <li><a href="#">Separated link</a></li> </ul> </li> </ul> </div><!-- /.navbar-collapse --> </div><!-- /.container-fluid --> </nav> <div class="container1"></div>获取矩阵colMeans(m)的列方式。然后我们使用m

sweep

其中sweep(m, 2, colMeans(m)) 指定边距(我们想要逐列操作,而在2D索引中,第二个索引用于列)。默认情况下,2执行sweep,因此在上面我们从矩阵中减去列均值,即以矩阵为中心。

同样,如果我们想从所有行中减去行均值,我们可以使用:

FUN = "-"

您也可以将sweep(m, 1, rowMeans(m)) 参数设置为其他功能。 FUN的另一个常见用途是用于列/行重新缩放,您可以在其中阅读How to rescale my matrix by column or row以获取更多信息。

其他答案中提到的函数sweep仅用 进行逐列操作。常见的用途是标准化所有矩阵列。我们可以将scale设置为仅执行列居中。

scale = FALSE只是scale的包装函数,您可以通过检查sweep的源代码来验证:

sweep.default

阅读if (center) { center <- colMeans(x, na.rm = TRUE) x <- sweep(x, 2L, center, check.margin = FALSE) } if (scale) { scale <- apply(x, 2L, f) x <- sweep(x, 2L, scale, "/", check.margin = FALSE) } ?sweep?scale了解有关这些功能的更多信息。

答案 1 :(得分:0)

你可以通过这个得到相同的结果(没有缩放的z得分归一化):

scale(df, scale=FALSE)

    angel    distance
[1,] -1.34444444 -0.16111111
[2,]  1.35555556  0.24888889
[3,]  0.05555556 -0.01111111
[4,] -0.44444444 -0.01111111
[5,]  0.95555556  0.10888889
[6,]  2.25555556  0.40888889
[7,] -1.74444444 -0.32111111
[8,] -1.54444444 -0.30111111
[9,]  0.45555556  0.03888889