[R] verInd= and HorInd= arguments to pairs() function
Gerrit Eichner
gerr|t@e|chner @end|ng |rom m@th@un|-g|e@@en@de
Fri Jun 8 12:55:31 CEST 2018
Am 08.06.2018 um 12:02 schrieb Martin Maechler:
>>>>>> Martin Maechler
>>>>>> on Fri, 8 Jun 2018 11:13:24 +0200 writes:
>
> [..........]
>
> >> Thank you, Chris, for the report and
> >> Gerrit for your proposed fix !!
> >>
> >> It looks good to me, but I will test some more (also with
> >> 'row1attop=FALSE') before committing the bug fix.
>
> > and there, another change was needed: Instead of your
>
> > for (j in if (row1attop) verInd else rev(verInd))
> > for (i in horInd) {
>
> > we do now need
>
> > for(j in verInd)
> > for(i in if(row1attop) horInd else rev(horInd)) {
>
> > and the difference is of course only relevant for the
> > non-default 'row1attop = FALSE'
>
> > (which some graphic experts argue to be clearly *better* than the default,
> > as only in that case, the upper and lower triangles of the
> > matrix are nicely "mirrors of each other", and that is also
> > the reason why lattice::splom() uses the equivalent of
> > 'row1attop=FALSE')
>
> > I will commit the change to R-devel today - and intend to port
> > to R-patched in time to make it into the upcoming R 3.5.1.
>
> Well, as I find, there are more bugs there, if you are using
> 'horInd' and 'verInd' creatively:
>
> In a nice pairs(), the axis ticks (and their labels (numbers))
> are always "on the outside" of the scatterplot matrix, and
> nicely alternating. This is not the case unfortunately, when using
> horInd or verInd which are *not* of the form p1:p2 (p1 <= p2)
>
> ==> even more changes are needed to make these cases "nice",
Well, the *shown* axis ticks and labels do nicely alternate if
(hor|ver)Ind = p1:p2 (p1 <= p2) is fulfilled, but not all of
the axis ticks and labels, which one *might* wish to see, are
currently drawn anyway ... I would consider changes which "heal"
this as more interesting than solving this problem in full
generality, i.e., in cases of creative use of (hor|ver)Ind.
However, I don't think it's urgent, at all.
> or should we *require* horInd and verInd to be of that form??
>
> This would not be back-compatible, but than such cases have been
> "wrong" really in all versions of R anyway, *and* at least be
> reordering the matrix/data.frame columns, the restriction of
>
> (hor|ver)Ind = p1:p2 (p1 <= p2)
>
> would seem acceptable, would it ?
>
I could live very well with that requirement (while breaking
back-compatibility), because from my point of view a "creative"
use of 'horInd' and 'verInd' violating (hor|ver)Ind = p1:p2
(p1 <= p2) won't occur often.
On the other hand, why forcing (hor|ver)Ind = p1:p2 (p1 <= p2)?
If people violated it "they get what they deserve". ;-)
Btw, 'horInd' and 'verInd' sort of exchange their meaning if
row1attop = FALSE, but I this can be explained by the "work flow":
First, (hor|ver)Ind are used to select the respective rows and
columns from the full paris-plot, and then, row1attop is used
when the results are drawn. I think this is sensible.
Regards -- Gerrit
More information about the R-help
mailing list