From timhesterberg at gmail.com  Wed Sep 12 07:23:14 2012
From: timhesterberg at gmail.com (Tim Hesterberg)
Date: Tue, 11 Sep 2012 22:23:14 -0700
Subject: [Rd] Suggest adding a 'pivot' argument to qr.R
In-Reply-To: <40D65328-9CBA-4E2D-AAEA-DAC0636A18F8@gmail.com> (message from
	peter dalgaard on Tue, 11 Sep 2012 18:03:53 +0200)
References: <0CAEE2B1235DF643B0F5E1EAE1487B53094747F7@023-CH1MPN1-043.023d.mgd.msft.net>
	<40D65328-9CBA-4E2D-AAEA-DAC0636A18F8@gmail.com>
Message-ID: <yajfipbj95ml.fsf@gmail.com>

>On Sep 11, 2012, at 16:02 , Warnes, Gregory wrote:
>
>>
>> On 9/7/12 2:42 PM, "peter dalgaard" <pdalgd at gmail.com> wrote:
>>
>>>
>>> On Sep 7, 2012, at 17:16 , Tim Hesterberg wrote:
>>>
>>>> I suggest adding a 'pivot' argument to qr.R, to obtain columns in the
>>>> same order as the original x, so that
>>>> a <- qr(x)
>>>> qr.Q(a) %*% qr.R(a, pivot=TRUE)
>>>> returns x.
>>>
>>> That would come spiraling down in flames the first time someone tried to
>>> use backsolve on it, wouldn't it? I mean, a major point of QR is that R
>>> is triangular; doesn't make much sense to permute the columns without
>>> retaining the pivoting permutation.
>>
>> As I understand Tim's proposal, the pivot argument defaults to FALSE, so
>> the new behavior would only be activated at the user's request.
>
>Sure. I'm just saying that I see little use for the un-pivoted qr.R because, generically, the first thing you want to do with qr.R is to invert it, which is easier when it is triangular.

Greg Warnes is correct, I propose keeping the default FALSE, for backward
compatibility.

My use for the pivoted R is in computing a covariance matrix, using
  R <- qr.R(QR, pivot = TRUE)
  Rinv <- ginverse(R)
  covTerm <- Rinv %*% t(Rinv)

But I see that lm() and glm() use chol2inv, that may be preferable.



[Rd] Suggest adding a 'pivot' argument to qr.R
Tim Hesterberg