From pauljohn32 at gmail.com  Thu Jan  5 21:26:45 2012
From: pauljohn32 at gmail.com (Paul Johnson)
Date: Thu, 5 Jan 2012 14:26:45 -0600
Subject: [Rd] delete.response leaves response in attribute dataClasses
Message-ID: <CAErODj9Aibpb4M=xq9+hHKw6Qurphxb2O7nb4A8x=F3UxPZLgA@mail.gmail.com>

I posted this one as an R bug
(https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=14767), but
Prof. Ripley says I'm premature, and I should raise the question here.

Here's the behavior I assert is a bug:
The output from delete.response on a terms object alters the formula
by removing the dependent variable. It removes the response from the
"variables" attribute and it changes the response attribute from 1 to
0.  The response is removed from "predvars"

But it leaves the name of the dependent variable first in the in
"dataClasses".  It caused an unexpected behavior in my code, so (as
usual) the bug may be mine, but in my heart, I believe it belongs to
delete.response.

To illustrate, here's a terms object from a regression.

> tt
y ~ x1 * x2 + x3 + x4
attr(,"variables")
list(y, x1, x2, x3, x4)
attr(,"factors")
   x1 x2 x3 x4 x1:x2
y   0  0  0  0     0
x1  1  0  0  0     1
x2  0  1  0  0     1
x3  0  0  1  0     0
x4  0  0  0  1     0
attr(,"term.labels")
[1] "x1"    "x2"    "x3"    "x4"    "x1:x2"
attr(,"order")
[1] 1 1 1 1 2
attr(,"intercept")
[1] 1
attr(,"response")
[1] 1
attr(,".Environment")
<environment: R_GlobalEnv>
attr(,"predvars")
list(y, x1, x2, x3, x4)
attr(,"dataClasses")
        y        x1        x2        x3        x4
"numeric" "numeric" "numeric" "numeric" "numeric"

Now observe that delete.response removes the response from all
attributes except dataClasses.

> delete.response(tt)
~x1 * x2 + x3 + x4
attr(,"variables")
list(x1, x2, x3, x4)
attr(,"factors")
   x1 x2 x3 x4 x1:x2
x1  1  0  0  0     1
x2  0  1  0  0     1
x3  0  0  1  0     0
x4  0  0  0  1     0
attr(,"term.labels")
[1] "x1"    "x2"    "x3"    "x4"    "x1:x2"
attr(,"order")
[1] 1 1 1 1 2
attr(,"intercept")
[1] 1
attr(,"response")
[1] 0
attr(,".Environment")
<environment: R_GlobalEnv>
attr(,"predvars")
list(x1, x2, x3, x4)
attr(,"dataClasses")
        y        x1        x2        x3        x4
"numeric" "numeric" "numeric" "numeric" "numeric"


pj

-- 
Paul E. Johnson
Professor, Political Science
1541 Lilac Lane, Room 504
University of Kansas



[Rd] delete.response leaves response in attribute dataClasses
Paul Johnson